1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-12 19:31:53 +00:00

Merge branch '2.0release' into develop

This commit is contained in:
winlin 2015-05-28 14:59:19 +08:00
commit b44987fac7
32 changed files with 306 additions and 166 deletions

View file

@ -127,7 +127,7 @@ cd simple-rtmp-server/trunk
* Usage: How to deploy SRS on ARM?([CN][v1_CN_SampleARM], [EN][v1_EN_SampleARM])
* Usage: How to ingest file/stream/device to SRS?([CN][v1_CN_SampleIngest], [EN][v1_EN_SampleIngest])
* Usage: How to use SRS-HTTP-server to delivery HTTP/HLS stream?([CN][v2_CN_SampleHTTP], [EN][v2_EN_SampleHTTP])
* Usage: How to show the demo of [CN][v1_CN_SampleDemo], [EN][v1_EN_SampleDemo])
* Usage: How to show the demo of ([CN][v1_CN_SampleDemo], [EN][v1_EN_SampleDemo])
* Usage: How to publish h.264 raw stream to [CN][v2_CN_SrsLibrtmp2], [EN][v2_EN_SrsLibrtmp2])
* Usage: Solution using SRS?([CN][v1_CN_Sample], [EN][v1_EN_Sample])
* Usage: Why SRS?([CN][v1_CN_Product], [EN][v1_EN_Product])

View file

@ -76,10 +76,10 @@ fi
echo "" >> $SRS_AUTO_HEADERS_H
# auto headers in depends.
if [ $SRS_HTTP_PARSER = YES ]; then
echo "#define SRS_AUTO_HTTP_PARSER" >> $SRS_AUTO_HEADERS_H
if [ $SRS_HTTP_CORE = YES ]; then
echo "#define SRS_AUTO_HTTP_CORE" >> $SRS_AUTO_HEADERS_H
else
echo "#undef SRS_AUTO_HTTP_PARSER" >> $SRS_AUTO_HEADERS_H
echo "#undef SRS_AUTO_HTTP_CORE" >> $SRS_AUTO_HEADERS_H
fi
if [ $SRS_HTTP_SERVER = YES ]; then

View file

@ -426,7 +426,7 @@ fi
# http-parser-2.1
#####################################################################################
# check the arm flag file, if flag changed, need to rebuild the st.
if [ $SRS_HTTP_PARSER = YES ]; then
if [ $SRS_HTTP_CORE = YES ]; then
# ok, arm specified, if the flag filed does not exists, need to rebuild.
if [ $SRS_EMBEDED_CPU = YES ]; then
if [[ -f ${SRS_OBJS}/_flag.st.hp.tmp && -f ${SRS_OBJS}/hp/http_parser.h && -f ${SRS_OBJS}/hp/libhttp_parser.a ]]; then

View file

@ -45,7 +45,7 @@ SRS_GPROF=RESERVED
################################################################
# libraries
SRS_FFMPEG_STUB=RESERVED
SRS_HTTP_PARSER=RESERVED
SRS_HTTP_CORE=RESERVED
# arguments
SRS_PREFIX=/usr/local/srs
SRS_JOBS=1
@ -376,7 +376,7 @@ function apply_user_presets() {
SRS_TRANSCODE=NO
SRS_INGEST=NO
SRS_STAT=NO
SRS_HTTP_PARSER=NO
SRS_HTTP_CORE=NO
SRS_HTTP_CALLBACK=NO
SRS_HTTP_SERVER=NO
SRS_STREAM_CASTER=NO
@ -403,7 +403,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=YES
@ -430,7 +430,7 @@ function apply_user_presets() {
SRS_TRANSCODE=NO
SRS_INGEST=NO
SRS_STAT=NO
SRS_HTTP_PARSER=NO
SRS_HTTP_CORE=NO
SRS_HTTP_CALLBACK=NO
SRS_HTTP_SERVER=NO
SRS_STREAM_CASTER=NO
@ -457,7 +457,7 @@ function apply_user_presets() {
SRS_TRANSCODE=NO
SRS_INGEST=NO
SRS_STAT=NO
SRS_HTTP_PARSER=NO
SRS_HTTP_CORE=NO
SRS_HTTP_CALLBACK=NO
SRS_HTTP_SERVER=NO
SRS_STREAM_CASTER=NO
@ -484,7 +484,7 @@ function apply_user_presets() {
SRS_TRANSCODE=NO
SRS_INGEST=NO
SRS_STAT=NO
SRS_HTTP_PARSER=NO
SRS_HTTP_CORE=NO
SRS_HTTP_CALLBACK=NO
SRS_HTTP_SERVER=NO
SRS_STREAM_CASTER=NO
@ -511,7 +511,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -539,7 +539,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -566,7 +566,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -593,7 +593,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -620,7 +620,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -647,7 +647,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -674,7 +674,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -701,7 +701,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -728,7 +728,7 @@ function apply_user_presets() {
SRS_TRANSCODE=YES
SRS_INGEST=YES
SRS_STAT=YES
SRS_HTTP_PARSER=YES
SRS_HTTP_CORE=YES
SRS_HTTP_CALLBACK=YES
SRS_HTTP_SERVER=YES
SRS_STREAM_CASTER=NO
@ -761,11 +761,11 @@ function apply_user_detail_options() {
if [ $SRS_TRANSCODE = YES ]; then SRS_FFMPEG_STUB=YES; fi
if [ $SRS_INGEST = YES ]; then SRS_FFMPEG_STUB=YES; fi
# if http-xxxx specified, open the SRS_HTTP_PARSER
SRS_HTTP_PARSER=NO
if [ $SRS_HTTP_CALLBACK = YES ]; then SRS_HTTP_PARSER=YES; fi
if [ $SRS_HTTP_SERVER = YES ]; then SRS_HTTP_PARSER=YES; fi
if [ $SRS_HTTP_API = YES ]; then SRS_HTTP_PARSER=YES; fi
# if http-xxxx specified, open the SRS_HTTP_CORE
SRS_HTTP_CORE=NO
if [ $SRS_HTTP_CALLBACK = YES ]; then SRS_HTTP_CORE=YES; fi
if [ $SRS_HTTP_SERVER = YES ]; then SRS_HTTP_CORE=YES; fi
if [ $SRS_HTTP_API = YES ]; then SRS_HTTP_CORE=YES; fi
# parse the jobs for make
if [[ "" -eq SRS_JOBS ]]; then
@ -790,7 +790,7 @@ function apply_user_detail_options() {
SRS_TRANSCODE=NO
SRS_INGEST=NO
SRS_STAT=NO
SRS_HTTP_PARSER=NO
SRS_HTTP_CORE=NO
SRS_HTTP_CALLBACK=NO
SRS_HTTP_SERVER=NO
SRS_STREAM_CASTER=NO
@ -855,13 +855,14 @@ function check_option_conflicts() {
if [ $SRS_GPERF_MP = YES ]; then echo "gperf-mp depends on gperf, see: ./configure --help"; __check_ok=NO; fi
if [ $SRS_GPERF_CP = YES ]; then echo "gperf-cp depends on gperf, see: ./configure --help"; __check_ok=NO; fi
fi
if [ $SRS_GPERF_MC = YES ]; then
if [ $SRS_GPERF_MP = YES ]; then
echo "gperf-mc not compatible with gperf-mp, see: ./configure --help";
echo "@see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html";
echo "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";
__check_ok=NO
fi
if [[ $SRS_GPERF_MC = YES && $SRS_GPERF_MP = YES ]]; then
echo "gperf-mc not compatible with gperf-mp, see: ./configure --help";
echo "@see: http://google-perftools.googlecode.com/svn/trunk/doc/heap_checker.html";
echo "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";
__check_ok=NO
fi
if [[ $SRS_HTTP_CORE = NO && $SRS_STREAM_CASTER = YES ]]; then
echo "stream-caster depends on http-api or http-server, see: ./configure --help"; __check_ok=NO;
fi
# generate the group option: SRS_GPERF
__gperf_slow=NO
@ -885,10 +886,8 @@ function check_option_conflicts() {
fi
# if x86/x64 or directly build, never use static
if [ $SRS_X86_X64 = YES ]; then
if [ $SRS_STATIC = YES ]; then
echo "x86/x64 should never use static, see: ./configure --help"; __check_ok=NO;
fi
if [[ $SRS_X86_X64 = YES && $SRS_STATIC = YES ]]; then
echo "x86/x64 should never use static, see: ./configure --help"; __check_ok=NO;
fi
# TODO: FIXME: check more os.

2
trunk/configure vendored
View file

@ -115,7 +115,7 @@ END
LibSTRoot="${SRS_OBJS_DIR}/st"; LibSTfile="${LibSTRoot}/libst.a"
# hp(http-parser) the http request/url parser, for SRS to support HTTP callback.
LibHttpParserRoot=""; LibHttpParserfile=""
if [ $SRS_HTTP_PARSER = YES ]; then LibHttpParserRoot="${SRS_OBJS_DIR}/hp"; LibHttpParserfile="${LibHttpParserRoot}/libhttp_parser.a"; fi
if [ $SRS_HTTP_CORE = YES ]; then LibHttpParserRoot="${SRS_OBJS_DIR}/hp"; LibHttpParserfile="${LibHttpParserRoot}/libhttp_parser.a"; fi
# openssl-1.0.1f, for the RTMP complex handshake.
LibSSLRoot="";LibSSLfile=""
if [ $SRS_SSL = YES ]; then if [ $SRS_USE_SYS_SSL = NO ]; then LibSSLRoot="${SRS_OBJS_DIR}/openssl/include"; LibSSLfile="${SRS_OBJS_DIR}/openssl/lib/libssl.a ${SRS_OBJS_DIR}/openssl/lib/libcrypto.a"; fi fi

View file

@ -1,5 +1,12 @@
#!/bin/bash
bash scripts/test_configure.sh && ./objs/srs_utest
echo "Usage: $0 [-jN]"
echo " -jN The make jobs, for example, -j8 to use 8cpu to make"
params="$@"
echo "params is: $params"
bash scripts/test_configure.sh $params && ./objs/srs_utest
ret=$?; if [[ 0 -ne $ret ]]; then echo "configure test and utest failed."; exit $ret; fi
echo "configure test and utest success";

View file

@ -1,5 +1,8 @@
#!/bin/bash
params="$@"
echo "params is: $params"
# discover the current work dir, the log and access.
echo "argv[0]=$0"
if [[ ! -f $0 ]]; then
@ -19,175 +22,181 @@ ret=$?; if [[ $ret -ne 0 ]]; then exit $ret; fi
item="./configure"
ok_msg "test \" ${item} \""
(./configure && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --x86-x64"
ok_msg "test \" ${item} \""
(./configure --x86-x64 && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --disable-all"
ok_msg "test \" ${item} \""
(./configure --disable-all && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast"
ok_msg "test \" ${item} \""
(./configure --fast && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --pure-rtmp"
ok_msg "test \" ${item} \""
(./configure --pure-rtmp && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --rtmp-hls"
ok_msg "test \" ${item} \""
(./configure --rtmp-hls && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-ssl"
ok_msg "test \" ${item} \""
(./configure --fast --with-ssl && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-hls"
ok_msg "test \" ${item} \""
(./configure --fast --with-hls && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-dvr"
ok_msg "test \" ${item} \""
(./configure --fast --with-dvr && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-nginx"
ok_msg "test \" ${item} \""
(./configure --fast --with-nginx && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-http-callback"
ok_msg "test \" ${item} \""
(./configure --fast --with-http-callback && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-http-server"
ok_msg "test \" ${item} \""
(./configure --fast --with-http-server && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-http-api"
ok_msg "test \" ${item} \""
(./configure --fast --with-http-api && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-ffmpeg"
ok_msg "test \" ${item} \""
(./configure --fast --with-ffmpeg && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-transcode"
ok_msg "test \" ${item} \""
(./configure --fast --with-transcode && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-ingest"
ok_msg "test \" ${item} \""
(./configure --fast --with-ingest && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-librtmp"
ok_msg "test \" ${item} \""
(./configure --fast --with-librtmp && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-research"
ok_msg "test \" ${item} \""
(./configure --fast --with-research && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-stream-caster --with-http-api"
ok_msg "test \" ${item} \""
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-utest"
ok_msg "test \" ${item} \""
(./configure --fast --with-utest && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-ssl --with-utest"
ok_msg "test \" ${item} \""
(./configure --fast --with-ssl --with-utest && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-gperf"
ok_msg "test \" ${item} \""
(./configure --fast --with-gperf && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-gperf --with-gmc"
ok_msg "test \" ${item} \""
(./configure --fast --with-gperf --with-gmc && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-gperf --with-gmp"
ok_msg "test \" ${item} \""
(./configure --fast --with-gperf --with-gmp && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-gperf --with-gcp"
ok_msg "test \" ${item} \""
(./configure --fast --with-gperf --with-gcp && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --with-gprof"
ok_msg "test \" ${item} \""
(./configure --fast --with-gprof && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --log-verbose"
ok_msg "test \" ${item} \""
(./configure --fast --log-verbose && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --log-info"
ok_msg "test \" ${item} \""
(./configure --fast --log-info && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --log-trace"
ok_msg "test \" ${item} \""
(./configure --fast --log-trace && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast --log-info --log-verbose --log-trace"
ok_msg "test \" ${item} \""
(./configure --fast --log-info --log-verbose --log-trace && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
@ -196,25 +205,70 @@ ok_msg "test \" ${item} \" success"
#######################################################################################################
item="./configure --dev"
ok_msg "test \" ${item} \""
(./configure --dev && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --fast-dev"
ok_msg "test \" ${item} \""
(./configure --fast-dev && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --demo"
ok_msg "test \" ${item} \""
(./configure --demo && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --full"
ok_msg "test \" ${item} \""
(./configure --full && make) >>$log 2>&1
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
#######################################################################################################
#######################################################################################################
#######################################################################################################
item="./configure --disable-all --with-ssl"
ok_msg "test \" ${item} \""
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --disable-all --with-hls --with-ssl --with-http-server --with-http-api"
ok_msg "test \" ${item} \""
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --disable-all --with-ssl --with-hls --with-nginx"
ok_msg "test \" ${item} \""
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --disable-all --with-ssl --with-hls --with-nginx --with-ffmpeg --with-transcode"
ok_msg "test \" ${item} \""
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --disable-all --with-ssl --with-ffmpeg --with-transcode"
ok_msg "test \" ${item} \""
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --disable-all --with-ssl --with-ffmpeg --with-ingest"
ok_msg "test \" ${item} \""
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"
item="./configure --disable-all --with-hls --with-ssl --with-http-server"
ok_msg "test \" ${item} \""
($item && make $params) >>$log 2>&1
ret=$?; if [[ $ret -ne 0 ]]; then failed_msg "test \" ${item} \" failed. ret=$ret"; exit $ret; fi
ok_msg "test \" ${item} \" success"

View file

@ -33,7 +33,6 @@ using namespace std;
#include <srs_kernel_log.hpp>
#include <srs_app_config.hpp>
#include <srs_app_pithy_print.hpp>
#include <srs_app_http.hpp>
#include <srs_app_http_conn.hpp>
#include <srs_core_autofree.hpp>
#include <srs_kernel_flv.hpp>
@ -89,9 +88,10 @@ void SrsAppCasterFlv::remove(SrsConnection* c)
}
}
int SrsAppCasterFlv::serve_http(ISrsHttpResponseWriter* w, SrsHttpMessage* r)
int SrsAppCasterFlv::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r)
{
SrsDynamicHttpConn* conn = dynamic_cast<SrsDynamicHttpConn*>(r->connection());
SrsHttpMessage* msg = dynamic_cast<SrsHttpMessage*>(r);
SrsDynamicHttpConn* conn = dynamic_cast<SrsDynamicHttpConn*>(msg->connection());
srs_assert(conn);
std::string app = srs_path_dirname(r->path());
@ -134,13 +134,13 @@ SrsDynamicHttpConn::~SrsDynamicHttpConn()
srs_freep(pprint);
}
int SrsDynamicHttpConn::on_got_http_message(SrsHttpMessage* msg)
int SrsDynamicHttpConn::on_got_http_message(ISrsHttpMessage* msg)
{
int ret = ERROR_SUCCESS;
return ret;
}
int SrsDynamicHttpConn::proxy(ISrsHttpResponseWriter* w, SrsHttpMessage* r, std::string o)
int SrsDynamicHttpConn::proxy(ISrsHttpResponseWriter* w, ISrsHttpMessage* r, std::string o)
{
int ret = ERROR_SUCCESS;
@ -430,7 +430,7 @@ int SrsHttpFileReader::read(void* buf, size_t count, ssize_t* pnread)
}
int total_read = 0;
while (total_read < count) {
while (total_read < (int)count) {
int nread = 0;
if ((ret = http->read((char*)buf + total_read, (int)(count - total_read), &nread)) != ERROR_SUCCESS) {
return ret;

View file

@ -37,7 +37,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
class SrsConfDirective;
class SrsHttpServeMux;
class SrsHttpConn;
class SrsRtmpClient;
class SrsStSocket;
class SrsRequest;
@ -48,7 +47,6 @@ class SrsFlvDecoder;
#include <srs_app_st.hpp>
#include <srs_app_listener.hpp>
#include <srs_app_conn.hpp>
#include <srs_app_http.hpp>
#include <srs_app_http_conn.hpp>
#include <srs_kernel_file.hpp>
@ -75,7 +73,7 @@ public:
virtual void remove(SrsConnection* c);
// ISrsHttpHandler
public:
virtual int serve_http(ISrsHttpResponseWriter* w, SrsHttpMessage* r);
virtual int serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r);
};
/**
@ -96,9 +94,9 @@ public:
SrsDynamicHttpConn(IConnectionManager* cm, st_netfd_t fd, SrsHttpServeMux* m);
virtual ~SrsDynamicHttpConn();
public:
virtual int on_got_http_message(SrsHttpMessage* msg);
virtual int on_got_http_message(ISrsHttpMessage* msg);
public:
virtual int proxy(ISrsHttpResponseWriter* w, SrsHttpMessage* r, std::string o);
virtual int proxy(ISrsHttpResponseWriter* w, ISrsHttpMessage* r, std::string o);
private:
virtual int do_proxy(ISrsHttpResponseReader* rr, SrsFlvDecoder* dec);
virtual int rtmp_write_packet(char type, u_int32_t timestamp, char* data, int size);

View file

@ -364,6 +364,8 @@ int SrsConfDirective::read_token(SrsConfigBuffer* buffer, vector<string>& args,
SrsConfig::SrsConfig()
{
dolphin = false;
show_help = false;
show_version = false;
test_conf = false;
@ -378,6 +380,25 @@ SrsConfig::~SrsConfig()
srs_freep(root);
}
bool SrsConfig::is_dolphin()
{
return dolphin;
}
void SrsConfig::set_config_directive(SrsConfDirective* parent, string dir, string value)
{
SrsConfDirective* d = parent->get(dir);
if (!d) {
d = new SrsConfDirective();
d->name = dir;
parent->directives.push_back(d);
}
d->args.clear();
d->args.push_back(value);
}
void SrsConfig::subscribe(ISrsReloadHandler* handler)
{
std::vector<ISrsReloadHandler*>::iterator it;
@ -1260,6 +1281,19 @@ int SrsConfig::parse_argv(int& i, char** argv)
show_help = false;
test_conf = true;
break;
case 'p':
dolphin = true;
if (*p) {
dolphin_port = p;
continue;
}
if (argv[++i]) {
dolphin_port = argv[i];
continue;
}
ret = ERROR_SYSTEM_CONFIG_INVALID;
srs_error("option \"-p\" requires params, ret=%d", ret);
return ret;
case 'v':
case 'V':
show_help = false;
@ -1269,11 +1303,11 @@ int SrsConfig::parse_argv(int& i, char** argv)
show_help = false;
if (*p) {
config_file = p;
return ret;
continue;
}
if (argv[++i]) {
config_file = argv[i];
return ret;
continue;
}
ret = ERROR_SYSTEM_CONFIG_INVALID;
srs_error("option \"-c\" requires parameter, ret=%d", ret);
@ -1844,6 +1878,14 @@ int SrsConfig::parse_buffer(SrsConfigBuffer* buffer)
if ((ret = root->parse(buffer)) != ERROR_SUCCESS) {
return ret;
}
// mock by dolphin mode.
// for the dolphin will start srs with specified params.
if (dolphin) {
set_config_directive(root, "listen", dolphin_port);
set_config_directive(root, "daemon", "off");
set_config_directive(root, "srs_log_tank", "console");
}
return ret;
}

View file

@ -266,6 +266,12 @@ class SrsConfig
{
// user command
private:
/**
* whether srs is run in dolphin mode.
* @see https://github.com/simple-rtmp-server/srs-dolphin
*/
bool dolphin;
std::string dolphin_port;
/**
* whether show help and exit.
*/
@ -309,6 +315,14 @@ private:
public:
SrsConfig();
virtual ~SrsConfig();
// dolphin
public:
/**
* whether srs is in dolphin mode.
*/
virtual bool is_dolphin();
private:
virtual void set_config_directive(SrsConfDirective* parent, std::string dir, std::string value);
// reload
public:
/**

View file

@ -23,7 +23,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_heartbeat.hpp>
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
#include <sstream>
using namespace std;

View file

@ -29,7 +29,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <srs_core.hpp>
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
/**
* the http heartbeat to api-server to notice api

View file

@ -23,11 +23,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_hls.hpp>
/**
* the HLS section, only available when HLS enabled.
*/
#ifdef SRS_AUTO_HLS
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@ -72,6 +67,11 @@ ISrsHlsHandler::~ISrsHlsHandler()
{
}
/**
* * the HLS section, only available when HLS enabled.
* */
#ifdef SRS_AUTO_HLS
SrsHlsCacheWriter::SrsHlsCacheWriter(bool write_cache, bool write_file)
{
should_write_cache = write_cache;

View file

@ -29,11 +29,6 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <srs_core.hpp>
/**
* the HLS section, only available when HLS enabled.
*/
#ifdef SRS_AUTO_HLS
#include <string>
#include <vector>
@ -86,6 +81,11 @@ public:
virtual int on_hls_unpublish(SrsRequest* req) = 0;
};
/**
* * the HLS section, only available when HLS enabled.
* */
#ifdef SRS_AUTO_HLS
/**
* write to file and cache.
*/

View file

@ -23,7 +23,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_http_client.hpp>
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
#include <arpa/inet.h>

View file

@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <string>
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
#include <srs_app_st.hpp>

View file

@ -23,7 +23,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_app_http_conn.hpp>
#if defined(SRS_AUTO_HTTP_PARSER) || defined(SRS_AUTO_HTTP_SERVER)
#if defined(SRS_AUTO_HTTP_CORE) || defined(SRS_AUTO_HTTP_SERVER)
#include <sys/types.h>
#include <sys/stat.h>
@ -55,7 +55,7 @@ using namespace std;
#endif
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
SrsHttpResponseWriter::SrsHttpResponseWriter(SrsStSocket* io)
{
@ -2423,6 +2423,9 @@ int SrsHttpServer::initialize_hls_streaming()
return ret;
}
#endif
#ifdef SRS_AUTO_HTTP_CORE
SrsHttpConn::SrsHttpConn(IConnectionManager* cm, st_netfd_t fd, SrsHttpServeMux* m)
: SrsConnection(cm, fd)
{

View file

@ -30,11 +30,11 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <srs_core.hpp>
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
#include <http_parser.h>
#endif
#if defined(SRS_AUTO_HTTP_PARSER) || defined(SRS_AUTO_HTTP_SERVER)
#ifdef SRS_AUTO_HTTP_CORE
#include <map>
#include <string>
@ -69,7 +69,7 @@ class SrsHttpMessage;
#endif
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
// the http chunked header size,
// for writev, there always one chunk to send it.
@ -214,7 +214,7 @@ public:
virtual int update(std::string url, http_parser* header,
SrsFastBuffer* body, std::vector<SrsHttpHeaderField>& headers
);
private:
public:
virtual SrsConnection* connection();
public:
virtual u_int8_t method();
@ -711,6 +711,9 @@ private:
virtual int initialize_hls_streaming();
};
#endif
#ifdef SRS_AUTO_HTTP_CORE
class SrsHttpConn : public SrsConnection
{
private:

View file

@ -113,18 +113,18 @@ int SrsUdpListener::listen()
if ((_fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
ret = ERROR_SOCKET_CREATE;
srs_error("create linux socket error. port=%d, ret=%d", ip.c_str(), port, ret);
srs_error("create linux socket error. ip=%s, port=%d, ret=%d", ip.c_str(), port, ret);
return ret;
}
srs_verbose("create linux socket success. port=%d, fd=%d", ip.c_str(), port, _fd);
srs_verbose("create linux socket success. ip=%s, port=%d, fd=%d", ip.c_str(), port, _fd);
int reuse_socket = 1;
if (setsockopt(_fd, SOL_SOCKET, SO_REUSEADDR, &reuse_socket, sizeof(int)) == -1) {
ret = ERROR_SOCKET_SETREUSE;
srs_error("setsockopt reuse-addr error. port=%d, ret=%d", ip.c_str(), port, ret);
srs_error("setsockopt reuse-addr error. ip=%s, port=%d, ret=%d", ip.c_str(), port, ret);
return ret;
}
srs_verbose("setsockopt reuse-addr success. port=%d, fd=%d", ip.c_str(), port, _fd);
srs_verbose("setsockopt reuse-addr success. ip=%s, port=%d, fd=%d", ip.c_str(), port, _fd);
sockaddr_in addr;
addr.sin_family = AF_INET;

View file

@ -43,10 +43,13 @@ SrsThreadContext::~SrsThreadContext()
{
}
void SrsThreadContext::generate_id()
int SrsThreadContext::generate_id()
{
static int id = 100;
cache[st_thread_self()] = id++;
int gid = id++;
cache[st_thread_self()] = gid;
return gid;
}
int SrsThreadContext::get_id()

View file

@ -51,7 +51,7 @@ public:
SrsThreadContext();
virtual ~SrsThreadContext();
public:
virtual void generate_id();
virtual int generate_id();
virtual int get_id();
};

View file

@ -154,9 +154,9 @@ int SrsStreamListener::listen(string i, int p)
return ret;
}
srs_info("listen thread cid=%d, current_cid=%d, "
srs_info("listen thread current_cid=%d, "
"listen at port=%d, type=%d, fd=%d started success, ep=%s:%d",
pthread->cid(), _srs_context->get_id(), _port, _type, fd, ip.c_str(), port);
_srs_context->get_id(), p, type, listener->fd(), i.c_str(), p);
srs_trace("%s listen at tcp://%s:%d, fd=%d", srs_listener_type2string(type).c_str(), ip.c_str(), port, listener->fd());
@ -327,9 +327,9 @@ int SrsUdpStreamListener::listen(string i, int p)
return ret;
}
srs_info("listen thread cid=%d, current_cid=%d, "
srs_info("listen thread current_cid=%d, "
"listen at port=%d, type=%d, fd=%d started success, ep=%s:%d",
pthread->cid(), _srs_context->get_id(), port, type, fd, ip.c_str(), port);
_srs_context->get_id(), p, type, listener->fd(), i.c_str(), p);
// notify the handler the fd changed.
if ((ret = caster->on_stfd_change(listener->stfd())) != ERROR_SUCCESS) {
@ -495,7 +495,7 @@ SrsServer::SrsServer()
#ifdef SRS_AUTO_HTTP_SERVER
http_stream_mux = new SrsHttpServer(this);
#endif
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
http_heartbeat = NULL;
#endif
#ifdef SRS_AUTO_INGEST
@ -530,7 +530,7 @@ void SrsServer::destroy()
srs_freep(http_stream_mux);
#endif
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
srs_freep(http_heartbeat);
#endif
@ -589,7 +589,7 @@ int SrsServer::initialize(ISrsServerCycle* cycle_handler)
}
#endif
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
srs_assert(!http_heartbeat);
http_heartbeat = new SrsHttpHeartbeat();
#endif
@ -607,7 +607,7 @@ int SrsServer::initialize_st()
int ret = ERROR_SUCCESS;
// init st
if ((ret = srs_init_st()) != ERROR_SUCCESS) {
if ((ret = srs_st_init()) != ERROR_SUCCESS) {
srs_error("init st failed. ret=%d", ret);
return ret;
}
@ -639,6 +639,11 @@ int SrsServer::acquire_pid_file()
{
int ret = ERROR_SUCCESS;
// when srs in dolphin mode, no need the pid file.
if (_srs_config->is_dolphin()) {
return ret;
}
std::string pid_file = _srs_config->get_pid_file();
// -rw-r--r--
@ -971,7 +976,7 @@ int SrsServer::do_cycle()
srs_info("update network server kbps info.");
resample_kbps();
}
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
if (_srs_config->get_heartbeat_enabled()) {
if ((i % heartbeat_max_resolution) == 0) {
srs_info("do http heartbeat, for internal server to report.");

View file

@ -240,7 +240,7 @@ private:
#ifdef SRS_AUTO_HTTP_SERVER
SrsHttpServer* http_stream_mux;
#endif
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
SrsHttpHeartbeat* http_heartbeat;
#endif
#ifdef SRS_AUTO_INGEST

67
trunk/src/app/srs_app_source.cpp Normal file → Executable file
View file

@ -357,52 +357,49 @@ int SrsMessageQueue::dump_packets(SrsConsumer* consumer, bool atc, int tba, int
void SrsMessageQueue::shrink()
{
int iframe_index = -1;
SrsSharedPtrMessage* video_sh = NULL;
SrsSharedPtrMessage* audio_sh = NULL;
int msgs_size = (int)msgs.size();
// issue the first iframe.
// skip the first frame, whatever the type of it,
// for when we shrinked, the first is the iframe,
// we will directly remove the gop next time.
for (int i = 1; i < (int)msgs.size(); i++) {
// remove all msg
// igone the sequence header
for (int i = 0; i < (int)msgs.size(); i++) {
SrsSharedPtrMessage* msg = msgs.at(i);
if (msg->is_video()) {
if (SrsFlvCodec::video_is_keyframe(msg->payload, msg->size)) {
// the max frame index to remove.
iframe_index = i;
// set the start time, we will remove until this frame.
av_start_time = msg->timestamp;
break;
}
if (msg->is_video() && SrsFlvCodec::video_is_sequence_header(msg->payload, msg->size)) {
srs_freep(video_sh);
video_sh = msg;
continue;
}
else if (msg->is_audio() && SrsFlvCodec::audio_is_sequence_header(msg->payload, msg->size)) {
srs_freep(audio_sh);
audio_sh = msg;
continue;
}
srs_freep(msg);
}
// no iframe, for audio, clear the queue.
// it is ok to clear for audio, for the shrink tell us the queue is full.
// for video, we clear util the I-Frame, for the decoding must start from I-frame,
// for audio, it's ok to clear any data, also we can clear the whole queue.
// @see: https://github.com/simple-rtmp-server/srs/issues/134
if (iframe_index < 0) {
clear();
return;
msgs.clear();
// update av_start_time
av_start_time = av_end_time;
//push_back secquence header and update timestamp
if (video_sh) {
video_sh->timestamp = av_end_time;
msgs.push_back(video_sh);
}
if (audio_sh) {
audio_sh->timestamp = av_end_time;
msgs.push_back(audio_sh);
}
if (_ignore_shrink) {
srs_info("shrink the cache queue, size=%d, removed=%d, max=%.2f",
(int)msgs.size(), iframe_index, queue_size_ms / 1000.0);
(int)msgs.size(), msgs_size - (int)msgs.size(), queue_size_ms / 1000.0);
} else {
srs_trace("shrink the cache queue, size=%d, removed=%d, max=%.2f",
(int)msgs.size(), iframe_index, queue_size_ms / 1000.0);
(int)msgs.size(), msgs_size - (int)msgs.size(), queue_size_ms / 1000.0);
}
// remove the first gop from the front
for (int i = 0; i < iframe_index; i++) {
SrsSharedPtrMessage* msg = msgs.at(i);
srs_freep(msg);
}
msgs.erase(msgs.begin(), msgs.begin() + iframe_index);
}
void SrsMessageQueue::clear()

View file

@ -42,7 +42,7 @@ bool srs_st_epoll_is_supported(void)
}
#endif
int srs_init_st()
int srs_st_init()
{
int ret = ERROR_SUCCESS;

View file

@ -33,7 +33,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#include <st.h>
// initialize st, requires epoll.
extern int srs_init_st();
extern int srs_st_init();
// close the netfd, and close the underlayer fd.
extern void srs_close_stfd(st_netfd_t& stfd);

View file

@ -66,8 +66,9 @@ ISrsThreadContext::~ISrsThreadContext()
{
}
void ISrsThreadContext::generate_id()
int ISrsThreadContext::generate_id()
{
return 0;
}
int ISrsThreadContext::get_id()

View file

@ -102,7 +102,7 @@ public:
ISrsThreadContext();
virtual ~ISrsThreadContext();
public:
virtual void generate_id();
virtual int generate_id();
virtual int get_id();
};

View file

@ -61,6 +61,8 @@ ISrsThreadContext* _srs_context = new ISrsThreadContext();
SrsConfig* _srs_config = NULL;
SrsServer* _srs_server = NULL;
#if defined(SRS_AUTO_HTTP_CORE)
/**
* main entrance.
*/
@ -70,7 +72,7 @@ int main(int argc, char** argv)
srs_assert(srs_is_little_endian());
// directly failed when compile limited.
#if !defined(SRS_AUTO_HTTP_PARSER)
#if !defined(SRS_AUTO_HTTP_CORE)
srs_error("depends on http-parser.");
exit(-1);
#endif
@ -1376,7 +1378,7 @@ int proxy_hls2rtmp(string hls, string rtmp)
int ret = ERROR_SUCCESS;
// init st.
if ((ret = srs_init_st()) != ERROR_SUCCESS) {
if ((ret = srs_st_init()) != ERROR_SUCCESS) {
srs_error("init st failed. ret=%d", ret);
return ret;
}
@ -1402,3 +1404,15 @@ int proxy_hls2rtmp(string hls, string rtmp)
return ret;
}
#else
int main(int argc, char** argv)
{
#ifndef SRS_AUTO_HTTP_CORE
srs_error("ingest requires http-api or http-server");
#endif
return -1;
}
#endif

View file

@ -96,7 +96,7 @@ void show_macro_features()
srs_warn("check feature http server: off");
#endif
#ifdef SRS_AUTO_HTTP_PARSER
#ifdef SRS_AUTO_HTTP_CORE
srs_trace("check feature http parser: on");
#else
srs_warn("check feature http parser: off");

View file

@ -961,8 +961,8 @@ int SrsProtocol::recv_interlaced_message(SrsCommonMessage** pmsg)
return ret;
}
srs_verbose("read message header success. "
"fmt=%d, mh_size=%d, ext_time=%d, size=%d, message(type=%d, size=%d, time=%"PRId64", sid=%d)",
fmt, mh_size, chunk->extended_timestamp, (chunk->msg? chunk->msg->size : 0), chunk->header.message_type,
"fmt=%d, ext_time=%d, size=%d, message(type=%d, size=%d, time=%"PRId64", sid=%d)",
fmt, chunk->extended_timestamp, (chunk->msg? chunk->msg->size : 0), chunk->header.message_type,
chunk->header.payload_length, chunk->header.timestamp, chunk->header.stream_id);
// read msg payload from chunk stream.