diff --git a/README.md b/README.md index 0985064c1..39341c337 100755 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ flv/ts/mp3/aac streaming for user prefered. 1. Multiple feature: transcode, forward, ingest, http hooks, dvr, hls, rtsp, http streaming, http api, refer, log, bandwith test and srs-librtmp. 1. Best maintainess: simple arch over state-threads(coroutine), single thread, single process -and only linux platform, common server x86-64/i386/arm/mips cpus, rich comments, strictly +and for linux/osx platform, common server x86-64/i386/arm/mips cpus, rich comments, strictly follows RTMP/HLS/RTSP spec. 1. Easy to use: both English and Chinese wiki, typically config files in trunk/conf, traceable and session based log, linux service script and install script. @@ -37,7 +37,7 @@ Enjoy it! SRS(SIMPLE RTMP Server) over state-threads created in 2013.10. -SRS delivers rtmp/hls/http live on x86/x64/arm/mips linux, +SRS delivers rtmp/hls/http live on x86/x64/arm/mips linux/osx, supports origin/edge/vhost and transcode/ingest and dvr/forward and http-api/http-callback/reload, introduces tracable session-oriented log, exports client srs-librtmp, @@ -550,6 +550,7 @@ Supported operating systems and hardware: ### SRS 2.0 history +* v2.0, 2015-03-10, fix [#155](https://github.com/winlinvip/simple-rtmp-server/issues/155), support osx(darwin) for mac pro. 2.0.137. * v2.0, 2015-03-08, fix [#316](https://github.com/winlinvip/simple-rtmp-server/issues/316), http api provides stream/vhost/srs/server bytes, codec and count. 2.0.136. * v2.0, 2015-03-08, fix [#310](https://github.com/winlinvip/simple-rtmp-server/issues/310), refine aac LC, support aac HE/HEv2. 2.0.134. * v2.0, 2015-03-06, for [#322](https://github.com/winlinvip/simple-rtmp-server/issues/322), fix http-flv stream bug, support multiple streams. 2.0.133. diff --git a/trunk/3rdparty/patches/2.http.parser.patch b/trunk/3rdparty/patches/2.http.parser.patch new file mode 100644 index 000000000..596d5972b --- /dev/null +++ b/trunk/3rdparty/patches/2.http.parser.patch @@ -0,0 +1,17 @@ +diff -r -c ./Makefile ../http-parser-2.1/Makefile +*** ./Makefile Tue Mar 10 10:44:19 2015 +--- ../http-parser-2.1/Makefile Wed Mar 27 06:35:20 2013 +*************** +*** 12,22 **** + CFLAGS_FAST = $(CFLAGS) -O3 $(CFLAGS_FAST_EXTRA) + CFLAGS_LIB = $(CFLAGS_FAST) -fPIC + +- # patch by winlin +- CPPFLAGS_FAST = $(CPPFLAGS_DEBUG) +- CFLAGS_FAST = $(CFLAGS_DEBUG) +- CFLAGS_LIB = $(CFLAGS_FAST) -fPIC +- + test: test_g test_fast + ./test_g + ./test_fast +--- 12,17 ---- diff --git a/trunk/auto/auto_headers.sh b/trunk/auto/auto_headers.sh index 462632a44..c559c3dfb 100755 --- a/trunk/auto/auto_headers.sh +++ b/trunk/auto/auto_headers.sh @@ -16,8 +16,28 @@ echo "#define SRS_AUTO_BUILD_DATE \"`date \"+%Y-%m-%d %H:%M:%S\"`\"" >> $SRS_AUT echo "#define SRS_AUTO_UNAME \"`uname -a`\"" >> $SRS_AUTO_HEADERS_H echo "#define SRS_AUTO_USER_CONFIGURE \"${SRS_AUTO_USER_CONFIGURE}\"" >> $SRS_AUTO_HEADERS_H echo "#define SRS_AUTO_CONFIGURE \"${SRS_AUTO_CONFIGURE}\"" >> $SRS_AUTO_HEADERS_H +echo "" >> $SRS_AUTO_HEADERS_H + +# export the preset. +if [ $SRS_OSX = YES ]; then + echo "#define SRS_OSX" >> $SRS_AUTO_HEADERS_H +fi +if [ $SRS_X86_X64 = YES ]; then + echo "#define SRS_X86_X64" >> $SRS_AUTO_HEADERS_H +fi +if [ $SRS_ARM_UBUNTU12 = YES ]; then + echo "#define SRS_ARM_UBUNTU12" >> $SRS_AUTO_HEADERS_H +fi +if [ $SRS_MIPS_UBUNTU12 = YES ]; then + echo "#define SRS_MIPS_UBUNTU12" >> $SRS_AUTO_HEADERS_H +fi +if [ $SRS_PI = YES ]; then + echo "#define SRS_PI" >> $SRS_AUTO_HEADERS_H +fi +if [ $SRS_CUBIE = YES ]; then + echo "#define SRS_CUBIE" >> $SRS_AUTO_HEADERS_H +fi -# new empty line to auto headers file. echo "" >> $SRS_AUTO_HEADERS_H ##################################################################################### diff --git a/trunk/auto/depends.sh b/trunk/auto/depends.sh index e7198aa76..97db9836e 100755 --- a/trunk/auto/depends.sh +++ b/trunk/auto/depends.sh @@ -41,6 +41,24 @@ function Ubuntu_prepare() return 0; fi fi + + # for arm, install the cross build tool chain. + if [ $SRS_ARM_UBUNTU12 = YES ]; then + $SrsArmCC --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi" + require_sudoer "sudo apt-get install -y --force-yes gcc-arm-linux-gnueabi g++-arm-linux-gnueabi" + sudo apt-get install -y --force-yes gcc-arm-linux-gnueabi g++-arm-linux-gnueabi; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi success" + fi + fi + + # for mips, user must installed the tool chain. + if [ $SRS_MIPS_UBUNTU12 = YES ]; then + $SrsArmCC --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "user must install the tool chain: $SrsArmCC" + return 2 + fi + fi OS_IS_UBUNTU=YES echo "Ubuntu detected, install tools if needed" @@ -110,24 +128,6 @@ function Ubuntu_prepare() fi fi - # for arm, install the cross build tool chain. - if [ $SRS_ARM_UBUNTU12 = YES ]; then - $SrsArmCC --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then - echo "install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi" - require_sudoer "sudo apt-get install -y --force-yes gcc-arm-linux-gnueabi g++-arm-linux-gnueabi" - sudo apt-get install -y --force-yes gcc-arm-linux-gnueabi g++-arm-linux-gnueabi; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi - echo "install gcc-arm-linux-gnueabi g++-arm-linux-gnueabi success" - fi - fi - - # for mips, user must installed the tool chain. - if [ $SRS_MIPS_UBUNTU12 = YES ]; then - $SrsArmCC --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then - echo "user must install the tool chain: $SrsArmCC" - return 2 - fi - fi - echo "Ubuntu install tools success" return 0 } @@ -144,6 +144,12 @@ function Centos_prepare() if [[ ! -f /etc/redhat-release ]]; then return 0; fi + + # for arm, install the cross build tool chain. + if [ $SRS_EMBEDED_CPU = YES ]; then + echo "embeded(arm/mips) is invalid for CentOS" + return 1 + fi OS_IS_CENTOS=YES echo "Centos detected, install tools if needed" @@ -220,12 +226,6 @@ function Centos_prepare() fi fi - # for arm, install the cross build tool chain. - if [ $SRS_EMBEDED_CPU = YES ]; then - echo "embeded(arm/mips) is invalid for CentOS" - return 1 - fi - echo "Centos install tools success" return 0 } @@ -233,13 +233,142 @@ function Centos_prepare() if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then Centos_prepare; ret=$?; if [[ 0 -ne $ret ]]; then echo "CentOS prepare failed, ret=$ret"; exit $ret; fi fi +##################################################################################### +# for Centos, auto install tools by yum +##################################################################################### +OS_IS_OSX=NO +function OSX_prepare() +{ + uname -s|grep Darwin >/dev/null 2>&1 + ret=$?; if [[ 0 -ne $ret ]]; then + if [ $SRS_OSX = YES ]; then + echo "OSX check failed, actual is `uname -s`" + exit 1; + fi + return 0; + fi + + # for arm, install the cross build tool chain. + if [ $SRS_EMBEDED_CPU = YES ]; then + echo "embeded(arm/mips) is invalid for OSX" + return 1 + fi + + OS_IS_OSX=YES + echo "OSX detected, install tools if needed" + + brew --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install brew" + echo "ruby -e \"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)\"" + ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install brew success" + fi + + gcc --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install gcc" + echo "brew install gcc" + brew install gcc; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install gcc success" + fi + + g++ --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install gcc-c++" + echo "brew install gcc-c++" + brew install gcc-c++; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install gcc-c++ success" + fi + + make --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install make" + echo "brew install make" + brew install make; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install make success" + fi + + patch --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install patch" + echo "brew install patch" + brew install patch; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install patch success" + fi + + unzip --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install unzip" + echo "brew install unzip" + brew install unzip; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install unzip success" + fi + + if [ $SRS_FFMPEG_TOOL = YES ]; then + automake --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install automake" + echo "brew install automake" + brew install automake; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install automake success" + fi + + autoconf --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install autoconf" + echo "brew install autoconf" + brew install autoconf; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install autoconf success" + fi + + libtool --help >/dev/null 2>&1; ret=$?; if [[ 0 -ne $ret ]]; then + echo "install libtool" + echo "brew install libtool" + brew install libtool; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install libtool success" + fi + + if [[ ! -f /usr/include/pcre.h ]]; then + echo "install pcre-devel" + echo "brew install pcre-devel" + brew install pcre-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install pcre-devel success" + fi + + if [[ ! -f /usr/include/zlib.h ]]; then + echo "install zlib-devel" + echo "brew install zlib-devel" + brew install zlib-devel; ret=$?; if [[ 0 -ne $ret ]]; then return $ret; fi + echo "install zlib-devel success" + fi + fi + + echo "OSX install tools success" + return 0 +} +# donot prepare tools, for srs-librtmp depends only gcc and g++. +if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then + OSX_prepare; ret=$?; if [[ 0 -ne $ret ]]; then echo "OSX prepare failed, ret=$ret"; exit $ret; fi +fi +# requires the osx when os +if [ $OS_IS_OSX = YES ]; then + if [ $SRS_OSX = NO ]; then + echo "OSX detected, must specifies the --osx" + exit 1 + fi + if [ $SRS_HTTP_API = YES ]; then + echo "OSX does not support http-api, use --without-http-api" + exit 1 + fi + if [ $SRS_STAT = YES ]; then + echo "OSX does not support stat, use --without-stat" + exit 1 + fi +fi ##################################################################################### # st-1.9 ##################################################################################### if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then # check the arm flag file, if flag changed, need to rebuild the st. - _ST_MAKE=linux-debug + _ST_MAKE=linux-debug && _ST_EXTRA_CFLAGS="-DMD_HAVE_EPOLL" + # for osx, use darwin for st, donot use epoll. + if [ $OS_IS_OSX = YES ]; then + _ST_MAKE=darwin-debug && _ST_EXTRA_CFLAGS="" + fi # memory leak for linux-optimized # @see: https://github.com/winlinvip/simple-rtmp-server/issues/197 if [ $SRS_EMBEDED_CPU = YES ]; then @@ -253,9 +382,9 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then ( rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} && unzip -q ../3rdparty/st-1.9.zip && cd st-1.9 && - patch -p0 < ../../3rdparty/patches/1.st.arm.patch && + patch -p0 -R < ../../3rdparty/patches/1.st.arm.patch && make CC=${SrsArmCC} AR=${SrsArmAR} LD=${SrsArmLD} RANDLIB=${SrsArmRANDLIB} \ - EXTRA_CFLAGS="-DMD_HAVE_EPOLL" ${_ST_MAKE} && + EXTRA_CFLAGS=${_ST_EXTRA_CFLAGS} ${_ST_MAKE} && cd .. && rm -rf st && ln -sf st-1.9/obj st && cd .. && touch ${SRS_OBJS}/_flag.st.arm.tmp ) @@ -268,7 +397,7 @@ if [ $SRS_EXPORT_LIBRTMP_PROJECT = NO ]; then ( rm -rf ${SRS_OBJS}/st-1.9 && cd ${SRS_OBJS} && unzip -q ../3rdparty/st-1.9.zip && cd st-1.9 && - make ${_ST_MAKE} EXTRA_CFLAGS="-DMD_HAVE_EPOLL" && + make ${_ST_MAKE} ${_ST_EXTRA_CFLAGS} && cd .. && rm -rf st && ln -sf st-1.9/obj st && cd .. && rm -f ${SRS_OBJS}/_flag.st.arm.tmp ) @@ -293,6 +422,7 @@ if [ $SRS_HTTP_PARSER = YES ]; then ( rm -rf ${SRS_OBJS}/http-parser-2.1 && cd ${SRS_OBJS} && unzip -q ../3rdparty/http-parser-2.1.zip && cd http-parser-2.1 && + patch -p0 -R < ../../3rdparty/patches/2.http.parser.patch && sed -i "s/CPPFLAGS_FAST +=.*$/CPPFLAGS_FAST = \$\(CPPFLAGS_DEBUG\)/g" Makefile && sed -i "s/CFLAGS_FAST =.*$/CFLAGS_FAST = \$\(CFLAGS_DEBUG\)/g" Makefile && make CC=${SrsArmCC} AR=${SrsArmAR} package && @@ -309,8 +439,7 @@ if [ $SRS_HTTP_PARSER = YES ]; then ( rm -rf ${SRS_OBJS}/http-parser-2.1 && cd ${SRS_OBJS} && unzip -q ../3rdparty/http-parser-2.1.zip && cd http-parser-2.1 && - sed -i "s/CPPFLAGS_FAST +=.*$/CPPFLAGS_FAST = \$\(CPPFLAGS_DEBUG\)/g" Makefile && - sed -i "s/CFLAGS_FAST =.*$/CFLAGS_FAST = \$\(CFLAGS_DEBUG\)/g" Makefile && + patch -p0 -R < ../../3rdparty/patches/2.http.parser.patch && make package && cd .. && rm -rf hp && ln -sf http-parser-2.1 hp && cd .. && rm -f ${SRS_OBJS}/_flag.st.hp.tmp @@ -402,7 +531,7 @@ if [ $SRS_HTTP_CALLBACK = YES ]; then if [[ -f ${SRS_OBJS}/CherryPy-3.2.4/setup.py ]]; then echo "CherryPy-3.2.4 is ok."; else - require_sudoer "configure --with-http-callback" + require_sudoer "install CherryPy-3.2.4" echo "install CherryPy-3.2.4"; ( sudo rm -rf ${SRS_OBJS}/CherryPy-3.2.4 && cd ${SRS_OBJS} && @@ -454,9 +583,11 @@ fi ##################################################################################### # extra configure options CONFIGURE_TOOL="./config" -EXTRA_CONFIGURE="" if [ $SRS_EMBEDED_CPU = YES ]; then - CONFIGURE_TOOL="./Configure" + CONFIGURE_TOOL="./Configure linux-armv4" +fi +if [ $SRS_OSX = YES ]; then + CONFIGURE_TOOL="./Configure darwin64-`uname -m`-cc" fi # @see http://www.openssl.org/news/secadv_20140407.txt # Affected users should upgrade to OpenSSL 1.0.1g. Users unable to immediately @@ -475,7 +606,7 @@ if [ $SRS_SSL = YES ]; then ( rm -rf ${SRS_OBJS}/openssl-1.0.1f && cd ${SRS_OBJS} && unzip -q ../3rdparty/openssl-1.0.1f.zip && cd openssl-1.0.1f && - $CONFIGURE_TOOL --prefix=`pwd`/_release -no-shared no-asm linux-armv4 -DOPENSSL_NO_HEARTBEATS ${EXTRA_CONFIGURE} && + $CONFIGURE_TOOL --prefix=`pwd`/_release -no-shared no-asm && make CC=${SrsArmCC} GCC=${SrsArmGCC} AR="${SrsArmAR} r" \ LD=${SrsArmLD} LINK=${SrsArmGCC} RANDLIB=${SrsArmRANDLIB} && make install_sw && @@ -492,7 +623,7 @@ if [ $SRS_SSL = YES ]; then ( rm -rf ${SRS_OBJS}/openssl-1.0.1f && cd ${SRS_OBJS} && unzip -q ../3rdparty/openssl-1.0.1f.zip && cd openssl-1.0.1f && - $CONFIGURE_TOOL --prefix=`pwd`/_release -no-shared -DOPENSSL_NO_HEARTBEATS ${EXTRA_CONFIGURE} && + $CONFIGURE_TOOL --prefix=`pwd`/_release -no-shared && make && make install_sw && cd .. && rm -rf openssl && ln -sf openssl-1.0.1f/_release openssl && cd .. && rm -f ${SRS_OBJS}/_flag.ssl.arm.tmp diff --git a/trunk/auto/options.sh b/trunk/auto/options.sh index adec4828a..c37232b39 100755 --- a/trunk/auto/options.sh +++ b/trunk/auto/options.sh @@ -68,6 +68,8 @@ SRS_EXPORT_LIBRTMP_SINGLE=NO # presets # for x86/x64 pc/servers SRS_X86_X64=NO +# for osx system +SRS_OSX=NO # armhf(v7cpu) built on ubuntu12 SRS_ARM_UBUNTU12=NO # mips built on ubuntu12 @@ -166,6 +168,7 @@ Options: Presets: --x86-x64 [default] for x86/x64 cpu, common pc and servers. + --osx for osx(darwin) system to build SRS. --pi for raspberry-pi(directly build), open features hls/ssl/static. --cubie for cubieboard(directly build), open features except ffmpeg/nginx. --arm alias for --with-arm-ubuntu12, for ubuntu12, arm crossbuild @@ -260,6 +263,7 @@ function parse_user_option() { --log-trace) SRS_LOG_TRACE=YES ;; --x86-x64) SRS_X86_X64=YES ;; + --osx) SRS_OSX=YES ;; --arm) SRS_ARM_UBUNTU12=YES ;; --mips) SRS_MIPS_UBUNTU12=YES ;; --pi) SRS_PI=YES ;; @@ -331,7 +335,9 @@ function apply_user_presets() { if [ $SRS_PI = NO ]; then if [ $SRS_CUBIE = NO ]; then if [ $SRS_X86_X64 = NO ]; then - SRS_X86_X64=YES; opt="--x86-x64 $opt"; + if [ $SRS_OSX = NO ]; then + SRS_X86_X64=YES; opt="--x86-x64 $opt"; + fi fi fi fi @@ -551,7 +557,7 @@ function apply_user_presets() { SRS_HTTP_CALLBACK=YES SRS_HTTP_SERVER=YES SRS_STREAM_CASTER=YES - SRS_HTTP_API=YES + SRS_HTTP_API=NO SRS_LIBRTMP=YES SRS_RESEARCH=NO SRS_UTEST=YES @@ -563,6 +569,32 @@ function apply_user_presets() { SRS_STATIC=NO fi + # for osx(darwin) + if [ $SRS_OSX = YES ]; then + SRS_HLS=YES + SRS_DVR=YES + SRS_NGINX=NO + SRS_SSL=YES + SRS_FFMPEG_TOOL=NO + SRS_TRANSCODE=YES + SRS_INGEST=YES + SRS_STAT=NO + SRS_HTTP_PARSER=YES + SRS_HTTP_CALLBACK=YES + SRS_HTTP_SERVER=YES + SRS_STREAM_CASTER=YES + SRS_HTTP_API=NO + SRS_LIBRTMP=YES + SRS_RESEARCH=NO + SRS_UTEST=NO + SRS_GPERF=NO + SRS_GPERF_MC=NO + SRS_GPERF_MP=NO + SRS_GPERF_CP=NO + SRS_GPROF=NO + SRS_STATIC=NO + fi + # if dev specified, open features if possible. if [ $SRS_DEV = YES ]; then SRS_HLS=YES diff --git a/trunk/configure b/trunk/configure index 8ca5d357d..7c8d91935 100755 --- a/trunk/configure +++ b/trunk/configure @@ -11,10 +11,10 @@ mkdir -p ${SRS_OBJS} ##################################################################################### # linux shell color support. -RED="\\e[31m" -GREEN="\\e[32m" -YELLOW="\\e[33m" -BLACK="\\e[0m" +RED="\\033[31m" +GREEN="\\033[32m" +YELLOW="\\033[33m" +BLACK="\\033[0m" ##################################################################################### # parse user options, set the variables like: diff --git a/trunk/etc/init.d/srs b/trunk/etc/init.d/srs index f49039649..f25d8bb9b 100755 --- a/trunk/etc/init.d/srs +++ b/trunk/etc/init.d/srs @@ -21,11 +21,11 @@ DEFAULT_LOG_FILE='./objs/srs.log' ######################################################################## # utility functions ######################################################################## -RED="\\e[31m" -GREEN="\\e[32m" -YELLOW="\\e[33m" -BLACK="\\e[0m" -POS="\\e[60G" +RED="\\033[31m" +GREEN="\\033[32m" +YELLOW="\\033[33m" +BLACK="\\033[0m" +POS="\\033[60G" ok_msg() { echo -e "${1}${POS}${BLACK}[${GREEN} OK ${BLACK}]" diff --git a/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj new file mode 100644 index 000000000..6cda70232 --- /dev/null +++ b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.pbxproj @@ -0,0 +1,783 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 3C1231F61AAE652D00CE8F6C /* srs_core_autofree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1231F01AAE652C00CE8F6C /* srs_core_autofree.cpp */; }; + 3C1231F71AAE652D00CE8F6C /* srs_core_performance.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1231F21AAE652C00CE8F6C /* srs_core_performance.cpp */; }; + 3C1231F81AAE652D00CE8F6C /* srs_core.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1231F41AAE652D00CE8F6C /* srs_core.cpp */; }; + 3C1232061AAE812C00CE8F6C /* srs_main_server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232051AAE812C00CE8F6C /* srs_main_server.cpp */; }; + 3C1232201AAE814D00CE8F6C /* srs_kernel_aac.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232081AAE814D00CE8F6C /* srs_kernel_aac.cpp */; }; + 3C1232211AAE814D00CE8F6C /* srs_kernel_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12320A1AAE814D00CE8F6C /* srs_kernel_buffer.cpp */; }; + 3C1232221AAE814D00CE8F6C /* srs_kernel_codec.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12320C1AAE814D00CE8F6C /* srs_kernel_codec.cpp */; }; + 3C1232231AAE814D00CE8F6C /* srs_kernel_consts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12320E1AAE814D00CE8F6C /* srs_kernel_consts.cpp */; }; + 3C1232241AAE814D00CE8F6C /* srs_kernel_error.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232101AAE814D00CE8F6C /* srs_kernel_error.cpp */; }; + 3C1232251AAE814D00CE8F6C /* srs_kernel_file.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232121AAE814D00CE8F6C /* srs_kernel_file.cpp */; }; + 3C1232261AAE814D00CE8F6C /* srs_kernel_flv.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232141AAE814D00CE8F6C /* srs_kernel_flv.cpp */; }; + 3C1232271AAE814D00CE8F6C /* srs_kernel_log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232161AAE814D00CE8F6C /* srs_kernel_log.cpp */; }; + 3C1232281AAE814D00CE8F6C /* srs_kernel_mp3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232181AAE814D00CE8F6C /* srs_kernel_mp3.cpp */; }; + 3C1232291AAE814D00CE8F6C /* srs_kernel_stream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12321A1AAE814D00CE8F6C /* srs_kernel_stream.cpp */; }; + 3C12322A1AAE814D00CE8F6C /* srs_kernel_ts.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12321C1AAE814D00CE8F6C /* srs_kernel_ts.cpp */; }; + 3C12322B1AAE814D00CE8F6C /* srs_kernel_utility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12321E1AAE814D00CE8F6C /* srs_kernel_utility.cpp */; }; + 3C1232411AAE81A400CE8F6C /* srs_raw_avc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12322D1AAE81A400CE8F6C /* srs_raw_avc.cpp */; }; + 3C1232421AAE81A400CE8F6C /* srs_rtmp_amf0.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12322F1AAE81A400CE8F6C /* srs_rtmp_amf0.cpp */; }; + 3C1232431AAE81A400CE8F6C /* srs_rtmp_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232311AAE81A400CE8F6C /* srs_rtmp_buffer.cpp */; }; + 3C1232441AAE81A400CE8F6C /* srs_rtmp_handshake.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232331AAE81A400CE8F6C /* srs_rtmp_handshake.cpp */; }; + 3C1232451AAE81A400CE8F6C /* srs_rtmp_io.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232351AAE81A400CE8F6C /* srs_rtmp_io.cpp */; }; + 3C1232461AAE81A400CE8F6C /* srs_rtmp_msg_array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232371AAE81A400CE8F6C /* srs_rtmp_msg_array.cpp */; }; + 3C1232471AAE81A400CE8F6C /* srs_rtmp_sdk.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232391AAE81A400CE8F6C /* srs_rtmp_sdk.cpp */; }; + 3C1232481AAE81A400CE8F6C /* srs_rtmp_stack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12323B1AAE81A400CE8F6C /* srs_rtmp_stack.cpp */; }; + 3C1232491AAE81A400CE8F6C /* srs_rtmp_utility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12323D1AAE81A400CE8F6C /* srs_rtmp_utility.cpp */; }; + 3C12324A1AAE81A400CE8F6C /* srs_rtsp_stack.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12323F1AAE81A400CE8F6C /* srs_rtsp_stack.cpp */; }; + 3C1232941AAE81D900CE8F6C /* srs_app_bandwidth.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12324C1AAE81D900CE8F6C /* srs_app_bandwidth.cpp */; }; + 3C1232951AAE81D900CE8F6C /* srs_app_config.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12324E1AAE81D900CE8F6C /* srs_app_config.cpp */; }; + 3C1232961AAE81D900CE8F6C /* srs_app_conn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232501AAE81D900CE8F6C /* srs_app_conn.cpp */; }; + 3C1232971AAE81D900CE8F6C /* srs_app_dvr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232521AAE81D900CE8F6C /* srs_app_dvr.cpp */; }; + 3C1232981AAE81D900CE8F6C /* srs_app_edge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232541AAE81D900CE8F6C /* srs_app_edge.cpp */; }; + 3C1232991AAE81D900CE8F6C /* srs_app_empty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232561AAE81D900CE8F6C /* srs_app_empty.cpp */; }; + 3C12329A1AAE81D900CE8F6C /* srs_app_encoder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232581AAE81D900CE8F6C /* srs_app_encoder.cpp */; }; + 3C12329B1AAE81D900CE8F6C /* srs_app_ffmpeg.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12325A1AAE81D900CE8F6C /* srs_app_ffmpeg.cpp */; }; + 3C12329C1AAE81D900CE8F6C /* srs_app_forward.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12325C1AAE81D900CE8F6C /* srs_app_forward.cpp */; }; + 3C12329D1AAE81D900CE8F6C /* srs_app_heartbeat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12325E1AAE81D900CE8F6C /* srs_app_heartbeat.cpp */; }; + 3C12329E1AAE81D900CE8F6C /* srs_app_hls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232601AAE81D900CE8F6C /* srs_app_hls.cpp */; }; + 3C12329F1AAE81D900CE8F6C /* srs_app_http_api.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232621AAE81D900CE8F6C /* srs_app_http_api.cpp */; }; + 3C1232A01AAE81D900CE8F6C /* srs_app_http_client.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232641AAE81D900CE8F6C /* srs_app_http_client.cpp */; }; + 3C1232A11AAE81D900CE8F6C /* srs_app_http_conn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232661AAE81D900CE8F6C /* srs_app_http_conn.cpp */; }; + 3C1232A21AAE81D900CE8F6C /* srs_app_http_hooks.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232681AAE81D900CE8F6C /* srs_app_http_hooks.cpp */; }; + 3C1232A31AAE81D900CE8F6C /* srs_app_http.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12326A1AAE81D900CE8F6C /* srs_app_http.cpp */; }; + 3C1232A41AAE81D900CE8F6C /* srs_app_ingest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12326C1AAE81D900CE8F6C /* srs_app_ingest.cpp */; }; + 3C1232A51AAE81D900CE8F6C /* srs_app_json.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12326E1AAE81D900CE8F6C /* srs_app_json.cpp */; }; + 3C1232A61AAE81D900CE8F6C /* srs_app_kbps.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232701AAE81D900CE8F6C /* srs_app_kbps.cpp */; }; + 3C1232A71AAE81D900CE8F6C /* srs_app_listener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232721AAE81D900CE8F6C /* srs_app_listener.cpp */; }; + 3C1232A81AAE81D900CE8F6C /* srs_app_log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232741AAE81D900CE8F6C /* srs_app_log.cpp */; }; + 3C1232A91AAE81D900CE8F6C /* srs_app_mpegts_udp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232761AAE81D900CE8F6C /* srs_app_mpegts_udp.cpp */; }; + 3C1232AA1AAE81D900CE8F6C /* srs_app_pithy_print.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232781AAE81D900CE8F6C /* srs_app_pithy_print.cpp */; }; + 3C1232AB1AAE81D900CE8F6C /* srs_app_recv_thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12327A1AAE81D900CE8F6C /* srs_app_recv_thread.cpp */; }; + 3C1232AC1AAE81D900CE8F6C /* srs_app_refer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12327C1AAE81D900CE8F6C /* srs_app_refer.cpp */; }; + 3C1232AD1AAE81D900CE8F6C /* srs_app_reload.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12327E1AAE81D900CE8F6C /* srs_app_reload.cpp */; }; + 3C1232AE1AAE81D900CE8F6C /* srs_app_rtmp_conn.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232801AAE81D900CE8F6C /* srs_app_rtmp_conn.cpp */; }; + 3C1232AF1AAE81D900CE8F6C /* srs_app_rtsp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232821AAE81D900CE8F6C /* srs_app_rtsp.cpp */; }; + 3C1232B01AAE81D900CE8F6C /* srs_app_security.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232841AAE81D900CE8F6C /* srs_app_security.cpp */; }; + 3C1232B11AAE81D900CE8F6C /* srs_app_server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232861AAE81D900CE8F6C /* srs_app_server.cpp */; }; + 3C1232B21AAE81D900CE8F6C /* srs_app_source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */; }; + 3C1232B31AAE81D900CE8F6C /* srs_app_st_socket.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */; }; + 3C1232B41AAE81D900CE8F6C /* srs_app_st.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */; }; + 3C1232B51AAE81D900CE8F6C /* srs_app_statistic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */; }; + 3C1232B61AAE81D900CE8F6C /* srs_app_thread.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232901AAE81D900CE8F6C /* srs_app_thread.cpp */; }; + 3C1232B71AAE81D900CE8F6C /* srs_app_utility.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3C1232921AAE81D900CE8F6C /* srs_app_utility.cpp */; }; + 3C1232D31AAEA56B00CE8F6C /* libst.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C1232D21AAEA56B00CE8F6C /* libst.a */; }; + 3C1232E91AAEA5D000CE8F6C /* libcrypto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C1232E71AAEA5D000CE8F6C /* libcrypto.a */; }; + 3C1232EA1AAEA5D000CE8F6C /* libssl.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C1232E81AAEA5D000CE8F6C /* libssl.a */; }; + 3C1232ED1AAEA70F00CE8F6C /* libhttp_parser.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3C1232EC1AAEA70F00CE8F6C /* libhttp_parser.a */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 3C1231E31AAE64A400CE8F6C /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = /usr/share/man/man1/; + dstSubfolderSpec = 0; + files = ( + ); + runOnlyForDeploymentPostprocessing = 1; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 3C1231E51AAE64A400CE8F6C /* srs_xcode */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; includeInIndex = 0; path = srs_xcode; sourceTree = BUILT_PRODUCTS_DIR; }; + 3C1231F01AAE652C00CE8F6C /* srs_core_autofree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_core_autofree.cpp; path = ../../../src/core/srs_core_autofree.cpp; sourceTree = ""; }; + 3C1231F11AAE652C00CE8F6C /* srs_core_autofree.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_core_autofree.hpp; path = ../../../src/core/srs_core_autofree.hpp; sourceTree = ""; }; + 3C1231F21AAE652C00CE8F6C /* srs_core_performance.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_core_performance.cpp; path = ../../../src/core/srs_core_performance.cpp; sourceTree = ""; }; + 3C1231F31AAE652C00CE8F6C /* srs_core_performance.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_core_performance.hpp; path = ../../../src/core/srs_core_performance.hpp; sourceTree = ""; }; + 3C1231F41AAE652D00CE8F6C /* srs_core.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_core.cpp; path = ../../../src/core/srs_core.cpp; sourceTree = ""; }; + 3C1231F51AAE652D00CE8F6C /* srs_core.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_core.hpp; path = ../../../src/core/srs_core.hpp; sourceTree = ""; }; + 3C1231FB1AAE673100CE8F6C /* srs_auto_headers.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_auto_headers.hpp; path = ../../../objs/srs_auto_headers.hpp; sourceTree = ""; }; + 3C1232051AAE812C00CE8F6C /* srs_main_server.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_main_server.cpp; path = ../../../src/main/srs_main_server.cpp; sourceTree = ""; }; + 3C1232081AAE814D00CE8F6C /* srs_kernel_aac.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_aac.cpp; path = ../../../src/kernel/srs_kernel_aac.cpp; sourceTree = ""; }; + 3C1232091AAE814D00CE8F6C /* srs_kernel_aac.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_aac.hpp; path = ../../../src/kernel/srs_kernel_aac.hpp; sourceTree = ""; }; + 3C12320A1AAE814D00CE8F6C /* srs_kernel_buffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_buffer.cpp; path = ../../../src/kernel/srs_kernel_buffer.cpp; sourceTree = ""; }; + 3C12320B1AAE814D00CE8F6C /* srs_kernel_buffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_buffer.hpp; path = ../../../src/kernel/srs_kernel_buffer.hpp; sourceTree = ""; }; + 3C12320C1AAE814D00CE8F6C /* srs_kernel_codec.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_codec.cpp; path = ../../../src/kernel/srs_kernel_codec.cpp; sourceTree = ""; }; + 3C12320D1AAE814D00CE8F6C /* srs_kernel_codec.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_codec.hpp; path = ../../../src/kernel/srs_kernel_codec.hpp; sourceTree = ""; }; + 3C12320E1AAE814D00CE8F6C /* srs_kernel_consts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_consts.cpp; path = ../../../src/kernel/srs_kernel_consts.cpp; sourceTree = ""; }; + 3C12320F1AAE814D00CE8F6C /* srs_kernel_consts.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_consts.hpp; path = ../../../src/kernel/srs_kernel_consts.hpp; sourceTree = ""; }; + 3C1232101AAE814D00CE8F6C /* srs_kernel_error.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_error.cpp; path = ../../../src/kernel/srs_kernel_error.cpp; sourceTree = ""; }; + 3C1232111AAE814D00CE8F6C /* srs_kernel_error.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_error.hpp; path = ../../../src/kernel/srs_kernel_error.hpp; sourceTree = ""; }; + 3C1232121AAE814D00CE8F6C /* srs_kernel_file.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_file.cpp; path = ../../../src/kernel/srs_kernel_file.cpp; sourceTree = ""; }; + 3C1232131AAE814D00CE8F6C /* srs_kernel_file.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_file.hpp; path = ../../../src/kernel/srs_kernel_file.hpp; sourceTree = ""; }; + 3C1232141AAE814D00CE8F6C /* srs_kernel_flv.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_flv.cpp; path = ../../../src/kernel/srs_kernel_flv.cpp; sourceTree = ""; }; + 3C1232151AAE814D00CE8F6C /* srs_kernel_flv.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_flv.hpp; path = ../../../src/kernel/srs_kernel_flv.hpp; sourceTree = ""; }; + 3C1232161AAE814D00CE8F6C /* srs_kernel_log.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_log.cpp; path = ../../../src/kernel/srs_kernel_log.cpp; sourceTree = ""; }; + 3C1232171AAE814D00CE8F6C /* srs_kernel_log.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_log.hpp; path = ../../../src/kernel/srs_kernel_log.hpp; sourceTree = ""; }; + 3C1232181AAE814D00CE8F6C /* srs_kernel_mp3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_mp3.cpp; path = ../../../src/kernel/srs_kernel_mp3.cpp; sourceTree = ""; }; + 3C1232191AAE814D00CE8F6C /* srs_kernel_mp3.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_mp3.hpp; path = ../../../src/kernel/srs_kernel_mp3.hpp; sourceTree = ""; }; + 3C12321A1AAE814D00CE8F6C /* srs_kernel_stream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_stream.cpp; path = ../../../src/kernel/srs_kernel_stream.cpp; sourceTree = ""; }; + 3C12321B1AAE814D00CE8F6C /* srs_kernel_stream.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_stream.hpp; path = ../../../src/kernel/srs_kernel_stream.hpp; sourceTree = ""; }; + 3C12321C1AAE814D00CE8F6C /* srs_kernel_ts.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_ts.cpp; path = ../../../src/kernel/srs_kernel_ts.cpp; sourceTree = ""; }; + 3C12321D1AAE814D00CE8F6C /* srs_kernel_ts.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_ts.hpp; path = ../../../src/kernel/srs_kernel_ts.hpp; sourceTree = ""; }; + 3C12321E1AAE814D00CE8F6C /* srs_kernel_utility.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_kernel_utility.cpp; path = ../../../src/kernel/srs_kernel_utility.cpp; sourceTree = ""; }; + 3C12321F1AAE814D00CE8F6C /* srs_kernel_utility.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_kernel_utility.hpp; path = ../../../src/kernel/srs_kernel_utility.hpp; sourceTree = ""; }; + 3C12322D1AAE81A400CE8F6C /* srs_raw_avc.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_raw_avc.cpp; path = ../../../src/protocol/srs_raw_avc.cpp; sourceTree = ""; }; + 3C12322E1AAE81A400CE8F6C /* srs_raw_avc.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_raw_avc.hpp; path = ../../../src/protocol/srs_raw_avc.hpp; sourceTree = ""; }; + 3C12322F1AAE81A400CE8F6C /* srs_rtmp_amf0.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtmp_amf0.cpp; path = ../../../src/protocol/srs_rtmp_amf0.cpp; sourceTree = ""; }; + 3C1232301AAE81A400CE8F6C /* srs_rtmp_amf0.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtmp_amf0.hpp; path = ../../../src/protocol/srs_rtmp_amf0.hpp; sourceTree = ""; }; + 3C1232311AAE81A400CE8F6C /* srs_rtmp_buffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtmp_buffer.cpp; path = ../../../src/protocol/srs_rtmp_buffer.cpp; sourceTree = ""; }; + 3C1232321AAE81A400CE8F6C /* srs_rtmp_buffer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtmp_buffer.hpp; path = ../../../src/protocol/srs_rtmp_buffer.hpp; sourceTree = ""; }; + 3C1232331AAE81A400CE8F6C /* srs_rtmp_handshake.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtmp_handshake.cpp; path = ../../../src/protocol/srs_rtmp_handshake.cpp; sourceTree = ""; }; + 3C1232341AAE81A400CE8F6C /* srs_rtmp_handshake.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtmp_handshake.hpp; path = ../../../src/protocol/srs_rtmp_handshake.hpp; sourceTree = ""; }; + 3C1232351AAE81A400CE8F6C /* srs_rtmp_io.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtmp_io.cpp; path = ../../../src/protocol/srs_rtmp_io.cpp; sourceTree = ""; }; + 3C1232361AAE81A400CE8F6C /* srs_rtmp_io.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtmp_io.hpp; path = ../../../src/protocol/srs_rtmp_io.hpp; sourceTree = ""; }; + 3C1232371AAE81A400CE8F6C /* srs_rtmp_msg_array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtmp_msg_array.cpp; path = ../../../src/protocol/srs_rtmp_msg_array.cpp; sourceTree = ""; }; + 3C1232381AAE81A400CE8F6C /* srs_rtmp_msg_array.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtmp_msg_array.hpp; path = ../../../src/protocol/srs_rtmp_msg_array.hpp; sourceTree = ""; }; + 3C1232391AAE81A400CE8F6C /* srs_rtmp_sdk.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtmp_sdk.cpp; path = ../../../src/protocol/srs_rtmp_sdk.cpp; sourceTree = ""; }; + 3C12323A1AAE81A400CE8F6C /* srs_rtmp_sdk.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtmp_sdk.hpp; path = ../../../src/protocol/srs_rtmp_sdk.hpp; sourceTree = ""; }; + 3C12323B1AAE81A400CE8F6C /* srs_rtmp_stack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtmp_stack.cpp; path = ../../../src/protocol/srs_rtmp_stack.cpp; sourceTree = ""; }; + 3C12323C1AAE81A400CE8F6C /* srs_rtmp_stack.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtmp_stack.hpp; path = ../../../src/protocol/srs_rtmp_stack.hpp; sourceTree = ""; }; + 3C12323D1AAE81A400CE8F6C /* srs_rtmp_utility.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtmp_utility.cpp; path = ../../../src/protocol/srs_rtmp_utility.cpp; sourceTree = ""; }; + 3C12323E1AAE81A400CE8F6C /* srs_rtmp_utility.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtmp_utility.hpp; path = ../../../src/protocol/srs_rtmp_utility.hpp; sourceTree = ""; }; + 3C12323F1AAE81A400CE8F6C /* srs_rtsp_stack.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_rtsp_stack.cpp; path = ../../../src/protocol/srs_rtsp_stack.cpp; sourceTree = ""; }; + 3C1232401AAE81A400CE8F6C /* srs_rtsp_stack.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_rtsp_stack.hpp; path = ../../../src/protocol/srs_rtsp_stack.hpp; sourceTree = ""; }; + 3C12324C1AAE81D900CE8F6C /* srs_app_bandwidth.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_bandwidth.cpp; path = ../../../src/app/srs_app_bandwidth.cpp; sourceTree = ""; }; + 3C12324D1AAE81D900CE8F6C /* srs_app_bandwidth.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_bandwidth.hpp; path = ../../../src/app/srs_app_bandwidth.hpp; sourceTree = ""; }; + 3C12324E1AAE81D900CE8F6C /* srs_app_config.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_config.cpp; path = ../../../src/app/srs_app_config.cpp; sourceTree = ""; }; + 3C12324F1AAE81D900CE8F6C /* srs_app_config.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_config.hpp; path = ../../../src/app/srs_app_config.hpp; sourceTree = ""; }; + 3C1232501AAE81D900CE8F6C /* srs_app_conn.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_conn.cpp; path = ../../../src/app/srs_app_conn.cpp; sourceTree = ""; }; + 3C1232511AAE81D900CE8F6C /* srs_app_conn.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_conn.hpp; path = ../../../src/app/srs_app_conn.hpp; sourceTree = ""; }; + 3C1232521AAE81D900CE8F6C /* srs_app_dvr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_dvr.cpp; path = ../../../src/app/srs_app_dvr.cpp; sourceTree = ""; }; + 3C1232531AAE81D900CE8F6C /* srs_app_dvr.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_dvr.hpp; path = ../../../src/app/srs_app_dvr.hpp; sourceTree = ""; }; + 3C1232541AAE81D900CE8F6C /* srs_app_edge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_edge.cpp; path = ../../../src/app/srs_app_edge.cpp; sourceTree = ""; }; + 3C1232551AAE81D900CE8F6C /* srs_app_edge.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_edge.hpp; path = ../../../src/app/srs_app_edge.hpp; sourceTree = ""; }; + 3C1232561AAE81D900CE8F6C /* srs_app_empty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_empty.cpp; path = ../../../src/app/srs_app_empty.cpp; sourceTree = ""; }; + 3C1232571AAE81D900CE8F6C /* srs_app_empty.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_empty.hpp; path = ../../../src/app/srs_app_empty.hpp; sourceTree = ""; }; + 3C1232581AAE81D900CE8F6C /* srs_app_encoder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_encoder.cpp; path = ../../../src/app/srs_app_encoder.cpp; sourceTree = ""; }; + 3C1232591AAE81D900CE8F6C /* srs_app_encoder.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_encoder.hpp; path = ../../../src/app/srs_app_encoder.hpp; sourceTree = ""; }; + 3C12325A1AAE81D900CE8F6C /* srs_app_ffmpeg.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_ffmpeg.cpp; path = ../../../src/app/srs_app_ffmpeg.cpp; sourceTree = ""; }; + 3C12325B1AAE81D900CE8F6C /* srs_app_ffmpeg.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_ffmpeg.hpp; path = ../../../src/app/srs_app_ffmpeg.hpp; sourceTree = ""; }; + 3C12325C1AAE81D900CE8F6C /* srs_app_forward.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_forward.cpp; path = ../../../src/app/srs_app_forward.cpp; sourceTree = ""; }; + 3C12325D1AAE81D900CE8F6C /* srs_app_forward.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_forward.hpp; path = ../../../src/app/srs_app_forward.hpp; sourceTree = ""; }; + 3C12325E1AAE81D900CE8F6C /* srs_app_heartbeat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_heartbeat.cpp; path = ../../../src/app/srs_app_heartbeat.cpp; sourceTree = ""; }; + 3C12325F1AAE81D900CE8F6C /* srs_app_heartbeat.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_heartbeat.hpp; path = ../../../src/app/srs_app_heartbeat.hpp; sourceTree = ""; }; + 3C1232601AAE81D900CE8F6C /* srs_app_hls.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_hls.cpp; path = ../../../src/app/srs_app_hls.cpp; sourceTree = ""; }; + 3C1232611AAE81D900CE8F6C /* srs_app_hls.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_hls.hpp; path = ../../../src/app/srs_app_hls.hpp; sourceTree = ""; }; + 3C1232621AAE81D900CE8F6C /* srs_app_http_api.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_http_api.cpp; path = ../../../src/app/srs_app_http_api.cpp; sourceTree = ""; }; + 3C1232631AAE81D900CE8F6C /* srs_app_http_api.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_http_api.hpp; path = ../../../src/app/srs_app_http_api.hpp; sourceTree = ""; }; + 3C1232641AAE81D900CE8F6C /* srs_app_http_client.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_http_client.cpp; path = ../../../src/app/srs_app_http_client.cpp; sourceTree = ""; }; + 3C1232651AAE81D900CE8F6C /* srs_app_http_client.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_http_client.hpp; path = ../../../src/app/srs_app_http_client.hpp; sourceTree = ""; }; + 3C1232661AAE81D900CE8F6C /* srs_app_http_conn.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_http_conn.cpp; path = ../../../src/app/srs_app_http_conn.cpp; sourceTree = ""; }; + 3C1232671AAE81D900CE8F6C /* srs_app_http_conn.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_http_conn.hpp; path = ../../../src/app/srs_app_http_conn.hpp; sourceTree = ""; }; + 3C1232681AAE81D900CE8F6C /* srs_app_http_hooks.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_http_hooks.cpp; path = ../../../src/app/srs_app_http_hooks.cpp; sourceTree = ""; }; + 3C1232691AAE81D900CE8F6C /* srs_app_http_hooks.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_http_hooks.hpp; path = ../../../src/app/srs_app_http_hooks.hpp; sourceTree = ""; }; + 3C12326A1AAE81D900CE8F6C /* srs_app_http.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_http.cpp; path = ../../../src/app/srs_app_http.cpp; sourceTree = ""; }; + 3C12326B1AAE81D900CE8F6C /* srs_app_http.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_http.hpp; path = ../../../src/app/srs_app_http.hpp; sourceTree = ""; }; + 3C12326C1AAE81D900CE8F6C /* srs_app_ingest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_ingest.cpp; path = ../../../src/app/srs_app_ingest.cpp; sourceTree = ""; }; + 3C12326D1AAE81D900CE8F6C /* srs_app_ingest.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_ingest.hpp; path = ../../../src/app/srs_app_ingest.hpp; sourceTree = ""; }; + 3C12326E1AAE81D900CE8F6C /* srs_app_json.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_json.cpp; path = ../../../src/app/srs_app_json.cpp; sourceTree = ""; }; + 3C12326F1AAE81D900CE8F6C /* srs_app_json.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_json.hpp; path = ../../../src/app/srs_app_json.hpp; sourceTree = ""; }; + 3C1232701AAE81D900CE8F6C /* srs_app_kbps.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_kbps.cpp; path = ../../../src/app/srs_app_kbps.cpp; sourceTree = ""; }; + 3C1232711AAE81D900CE8F6C /* srs_app_kbps.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_kbps.hpp; path = ../../../src/app/srs_app_kbps.hpp; sourceTree = ""; }; + 3C1232721AAE81D900CE8F6C /* srs_app_listener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_listener.cpp; path = ../../../src/app/srs_app_listener.cpp; sourceTree = ""; }; + 3C1232731AAE81D900CE8F6C /* srs_app_listener.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_listener.hpp; path = ../../../src/app/srs_app_listener.hpp; sourceTree = ""; }; + 3C1232741AAE81D900CE8F6C /* srs_app_log.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_log.cpp; path = ../../../src/app/srs_app_log.cpp; sourceTree = ""; }; + 3C1232751AAE81D900CE8F6C /* srs_app_log.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_log.hpp; path = ../../../src/app/srs_app_log.hpp; sourceTree = ""; }; + 3C1232761AAE81D900CE8F6C /* srs_app_mpegts_udp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_mpegts_udp.cpp; path = ../../../src/app/srs_app_mpegts_udp.cpp; sourceTree = ""; }; + 3C1232771AAE81D900CE8F6C /* srs_app_mpegts_udp.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_mpegts_udp.hpp; path = ../../../src/app/srs_app_mpegts_udp.hpp; sourceTree = ""; }; + 3C1232781AAE81D900CE8F6C /* srs_app_pithy_print.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_pithy_print.cpp; path = ../../../src/app/srs_app_pithy_print.cpp; sourceTree = ""; }; + 3C1232791AAE81D900CE8F6C /* srs_app_pithy_print.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_pithy_print.hpp; path = ../../../src/app/srs_app_pithy_print.hpp; sourceTree = ""; }; + 3C12327A1AAE81D900CE8F6C /* srs_app_recv_thread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_recv_thread.cpp; path = ../../../src/app/srs_app_recv_thread.cpp; sourceTree = ""; }; + 3C12327B1AAE81D900CE8F6C /* srs_app_recv_thread.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_recv_thread.hpp; path = ../../../src/app/srs_app_recv_thread.hpp; sourceTree = ""; }; + 3C12327C1AAE81D900CE8F6C /* srs_app_refer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_refer.cpp; path = ../../../src/app/srs_app_refer.cpp; sourceTree = ""; }; + 3C12327D1AAE81D900CE8F6C /* srs_app_refer.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_refer.hpp; path = ../../../src/app/srs_app_refer.hpp; sourceTree = ""; }; + 3C12327E1AAE81D900CE8F6C /* srs_app_reload.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_reload.cpp; path = ../../../src/app/srs_app_reload.cpp; sourceTree = ""; }; + 3C12327F1AAE81D900CE8F6C /* srs_app_reload.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_reload.hpp; path = ../../../src/app/srs_app_reload.hpp; sourceTree = ""; }; + 3C1232801AAE81D900CE8F6C /* srs_app_rtmp_conn.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_rtmp_conn.cpp; path = ../../../src/app/srs_app_rtmp_conn.cpp; sourceTree = ""; }; + 3C1232811AAE81D900CE8F6C /* srs_app_rtmp_conn.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_rtmp_conn.hpp; path = ../../../src/app/srs_app_rtmp_conn.hpp; sourceTree = ""; }; + 3C1232821AAE81D900CE8F6C /* srs_app_rtsp.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_rtsp.cpp; path = ../../../src/app/srs_app_rtsp.cpp; sourceTree = ""; }; + 3C1232831AAE81D900CE8F6C /* srs_app_rtsp.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_rtsp.hpp; path = ../../../src/app/srs_app_rtsp.hpp; sourceTree = ""; }; + 3C1232841AAE81D900CE8F6C /* srs_app_security.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_security.cpp; path = ../../../src/app/srs_app_security.cpp; sourceTree = ""; }; + 3C1232851AAE81D900CE8F6C /* srs_app_security.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_security.hpp; path = ../../../src/app/srs_app_security.hpp; sourceTree = ""; }; + 3C1232861AAE81D900CE8F6C /* srs_app_server.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_server.cpp; path = ../../../src/app/srs_app_server.cpp; sourceTree = ""; }; + 3C1232871AAE81D900CE8F6C /* srs_app_server.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_server.hpp; path = ../../../src/app/srs_app_server.hpp; sourceTree = ""; }; + 3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_source.cpp; path = ../../../src/app/srs_app_source.cpp; sourceTree = ""; }; + 3C1232891AAE81D900CE8F6C /* srs_app_source.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_source.hpp; path = ../../../src/app/srs_app_source.hpp; sourceTree = ""; }; + 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_st_socket.cpp; path = ../../../src/app/srs_app_st_socket.cpp; sourceTree = ""; }; + 3C12328B1AAE81D900CE8F6C /* srs_app_st_socket.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_st_socket.hpp; path = ../../../src/app/srs_app_st_socket.hpp; sourceTree = ""; }; + 3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_st.cpp; path = ../../../src/app/srs_app_st.cpp; sourceTree = ""; }; + 3C12328D1AAE81D900CE8F6C /* srs_app_st.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_st.hpp; path = ../../../src/app/srs_app_st.hpp; sourceTree = ""; }; + 3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_statistic.cpp; path = ../../../src/app/srs_app_statistic.cpp; sourceTree = ""; }; + 3C12328F1AAE81D900CE8F6C /* srs_app_statistic.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_statistic.hpp; path = ../../../src/app/srs_app_statistic.hpp; sourceTree = ""; }; + 3C1232901AAE81D900CE8F6C /* srs_app_thread.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_thread.cpp; path = ../../../src/app/srs_app_thread.cpp; sourceTree = ""; }; + 3C1232911AAE81D900CE8F6C /* srs_app_thread.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_thread.hpp; path = ../../../src/app/srs_app_thread.hpp; sourceTree = ""; }; + 3C1232921AAE81D900CE8F6C /* srs_app_utility.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = srs_app_utility.cpp; path = ../../../src/app/srs_app_utility.cpp; sourceTree = ""; }; + 3C1232931AAE81D900CE8F6C /* srs_app_utility.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = srs_app_utility.hpp; path = ../../../src/app/srs_app_utility.hpp; sourceTree = ""; }; + 3C1232B81AAE824500CE8F6C /* configure */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = configure; path = ../../../configure; sourceTree = ""; }; + 3C1232BB1AAE827E00CE8F6C /* apps.sh */ = {isa = PBXFileReference; explicitFileType = text.script.sh; fileEncoding = 4; name = apps.sh; path = ../../../auto/apps.sh; sourceTree = ""; }; + 3C1232BC1AAE827E00CE8F6C /* auto_headers.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = auto_headers.sh; path = ../../../auto/auto_headers.sh; sourceTree = ""; }; + 3C1232BD1AAE827E00CE8F6C /* build_ffmpeg.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = build_ffmpeg.sh; path = ../../../auto/build_ffmpeg.sh; sourceTree = ""; }; + 3C1232BE1AAE827E00CE8F6C /* depends.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = depends.sh; path = ../../../auto/depends.sh; sourceTree = ""; }; + 3C1232BF1AAE827E00CE8F6C /* generate_header.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = generate_header.sh; path = ../../../auto/generate_header.sh; sourceTree = ""; }; + 3C1232C01AAE827E00CE8F6C /* generate-srs-librtmp-project.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "generate-srs-librtmp-project.sh"; path = "../../../auto/generate-srs-librtmp-project.sh"; sourceTree = ""; }; + 3C1232C11AAE827E00CE8F6C /* generate-srs-librtmp-single.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "generate-srs-librtmp-single.sh"; path = "../../../auto/generate-srs-librtmp-single.sh"; sourceTree = ""; }; + 3C1232C21AAE827E00CE8F6C /* libs.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = libs.sh; path = ../../../auto/libs.sh; sourceTree = ""; }; + 3C1232C31AAE827E00CE8F6C /* local_ip.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = local_ip.sh; path = ../../../auto/local_ip.sh; sourceTree = ""; }; + 3C1232C41AAE827E00CE8F6C /* modules.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = modules.sh; path = ../../../auto/modules.sh; sourceTree = ""; }; + 3C1232C51AAE827E00CE8F6C /* options.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = options.sh; path = ../../../auto/options.sh; sourceTree = ""; }; + 3C1232C61AAE827E00CE8F6C /* summary.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = summary.sh; path = ../../../auto/summary.sh; sourceTree = ""; }; + 3C1232C71AAE827E00CE8F6C /* utest.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = utest.sh; path = ../../../auto/utest.sh; sourceTree = ""; }; + 3C1232C81AAE833300CE8F6C /* _log.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = _log.sh; path = ../../../scripts/_log.sh; sourceTree = ""; }; + 3C1232C91AAE833300CE8F6C /* build.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = build.sh; path = ../../../scripts/build.sh; sourceTree = ""; }; + 3C1232CA1AAE833300CE8F6C /* git.commit.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = git.commit.sh; path = ../../../scripts/git.commit.sh; sourceTree = ""; }; + 3C1232CB1AAE833300CE8F6C /* git2unix.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = git2unix.sh; path = ../../../scripts/git2unix.sh; sourceTree = ""; }; + 3C1232CC1AAE833300CE8F6C /* install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = install.sh; path = ../../../scripts/install.sh; sourceTree = ""; }; + 3C1232CD1AAE833300CE8F6C /* package.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = package.sh; path = ../../../scripts/package.sh; sourceTree = ""; }; + 3C1232CE1AAE833300CE8F6C /* run.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = run.sh; path = ../../../scripts/run.sh; sourceTree = ""; }; + 3C1232CF1AAE833300CE8F6C /* srs.test */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = srs.test; path = ../../../scripts/srs.test; sourceTree = ""; }; + 3C1232D01AAE833300CE8F6C /* stop.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = stop.sh; path = ../../../scripts/stop.sh; sourceTree = ""; }; + 3C1232D11AAE833300CE8F6C /* test_configure.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = test_configure.sh; path = ../../../scripts/test_configure.sh; sourceTree = ""; }; + 3C1232D21AAEA56B00CE8F6C /* libst.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libst.a; path = "../../objs/st-1.9/DARWIN_14.0.0_DBG/libst.a"; sourceTree = ""; }; + 3C1232E71AAEA5D000CE8F6C /* libcrypto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libcrypto.a; path = "../../objs/openssl-1.0.1f/_release/lib/libcrypto.a"; sourceTree = ""; }; + 3C1232E81AAEA5D000CE8F6C /* libssl.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libssl.a; path = "../../objs/openssl-1.0.1f/_release/lib/libssl.a"; sourceTree = ""; }; + 3C1232EC1AAEA70F00CE8F6C /* libhttp_parser.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libhttp_parser.a; path = "../../objs/http-parser-2.1/libhttp_parser.a"; sourceTree = ""; }; + 3C1232F11AAEAC7000CE8F6C /* srs */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = srs; path = ../../../etc/init.d/srs; sourceTree = ""; }; + 3C1232F21AAEAC7000CE8F6C /* srs-api */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "srs-api"; path = "../../../etc/init.d/srs-api"; sourceTree = ""; }; + 3C1232F31AAEAC7000CE8F6C /* srs-demo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "srs-demo"; path = "../../../etc/init.d/srs-demo"; sourceTree = ""; }; + 3C1232F41AAEAC7000CE8F6C /* srs-demo-19350 */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = "srs-demo-19350"; path = "../../../etc/init.d/srs-demo-19350"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3C1231E21AAE64A400CE8F6C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3C1232ED1AAEA70F00CE8F6C /* libhttp_parser.a in Frameworks */, + 3C1232E91AAEA5D000CE8F6C /* libcrypto.a in Frameworks */, + 3C1232EA1AAEA5D000CE8F6C /* libssl.a in Frameworks */, + 3C1232D31AAEA56B00CE8F6C /* libst.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3C1231DC1AAE64A400CE8F6C = { + isa = PBXGroup; + children = ( + 3C1232EE1AAEA71C00CE8F6C /* links */, + 3C1231E71AAE64A400CE8F6C /* srs_xcode */, + 3C1231E61AAE64A400CE8F6C /* Products */, + ); + sourceTree = ""; + }; + 3C1231E61AAE64A400CE8F6C /* Products */ = { + isa = PBXGroup; + children = ( + 3C1231E51AAE64A400CE8F6C /* srs_xcode */, + ); + name = Products; + sourceTree = ""; + }; + 3C1231E71AAE64A400CE8F6C /* srs_xcode */ = { + isa = PBXGroup; + children = ( + 3C1232EF1AAEAC5800CE8F6C /* etc */, + 3C1232B81AAE824500CE8F6C /* configure */, + 3C1232BA1AAE826F00CE8F6C /* auto */, + 3C1232B91AAE825100CE8F6C /* scripts */, + 3C12324B1AAE81CE00CE8F6C /* app */, + 3C12322C1AAE819900CE8F6C /* protocol */, + 3C1232071AAE814200CE8F6C /* kernel */, + 3C1232041AAE80CB00CE8F6C /* main */, + 3C1231F91AAE670E00CE8F6C /* objs */, + 3C1231EF1AAE651100CE8F6C /* core */, + ); + path = srs_xcode; + sourceTree = ""; + }; + 3C1231EF1AAE651100CE8F6C /* core */ = { + isa = PBXGroup; + children = ( + 3C1231F01AAE652C00CE8F6C /* srs_core_autofree.cpp */, + 3C1231F11AAE652C00CE8F6C /* srs_core_autofree.hpp */, + 3C1231F21AAE652C00CE8F6C /* srs_core_performance.cpp */, + 3C1231F31AAE652C00CE8F6C /* srs_core_performance.hpp */, + 3C1231F41AAE652D00CE8F6C /* srs_core.cpp */, + 3C1231F51AAE652D00CE8F6C /* srs_core.hpp */, + ); + name = core; + sourceTree = ""; + }; + 3C1231F91AAE670E00CE8F6C /* objs */ = { + isa = PBXGroup; + children = ( + 3C1231FB1AAE673100CE8F6C /* srs_auto_headers.hpp */, + ); + name = objs; + sourceTree = ""; + }; + 3C1232041AAE80CB00CE8F6C /* main */ = { + isa = PBXGroup; + children = ( + 3C1232051AAE812C00CE8F6C /* srs_main_server.cpp */, + ); + name = main; + sourceTree = ""; + }; + 3C1232071AAE814200CE8F6C /* kernel */ = { + isa = PBXGroup; + children = ( + 3C1232081AAE814D00CE8F6C /* srs_kernel_aac.cpp */, + 3C1232091AAE814D00CE8F6C /* srs_kernel_aac.hpp */, + 3C12320A1AAE814D00CE8F6C /* srs_kernel_buffer.cpp */, + 3C12320B1AAE814D00CE8F6C /* srs_kernel_buffer.hpp */, + 3C12320C1AAE814D00CE8F6C /* srs_kernel_codec.cpp */, + 3C12320D1AAE814D00CE8F6C /* srs_kernel_codec.hpp */, + 3C12320E1AAE814D00CE8F6C /* srs_kernel_consts.cpp */, + 3C12320F1AAE814D00CE8F6C /* srs_kernel_consts.hpp */, + 3C1232101AAE814D00CE8F6C /* srs_kernel_error.cpp */, + 3C1232111AAE814D00CE8F6C /* srs_kernel_error.hpp */, + 3C1232121AAE814D00CE8F6C /* srs_kernel_file.cpp */, + 3C1232131AAE814D00CE8F6C /* srs_kernel_file.hpp */, + 3C1232141AAE814D00CE8F6C /* srs_kernel_flv.cpp */, + 3C1232151AAE814D00CE8F6C /* srs_kernel_flv.hpp */, + 3C1232161AAE814D00CE8F6C /* srs_kernel_log.cpp */, + 3C1232171AAE814D00CE8F6C /* srs_kernel_log.hpp */, + 3C1232181AAE814D00CE8F6C /* srs_kernel_mp3.cpp */, + 3C1232191AAE814D00CE8F6C /* srs_kernel_mp3.hpp */, + 3C12321A1AAE814D00CE8F6C /* srs_kernel_stream.cpp */, + 3C12321B1AAE814D00CE8F6C /* srs_kernel_stream.hpp */, + 3C12321C1AAE814D00CE8F6C /* srs_kernel_ts.cpp */, + 3C12321D1AAE814D00CE8F6C /* srs_kernel_ts.hpp */, + 3C12321E1AAE814D00CE8F6C /* srs_kernel_utility.cpp */, + 3C12321F1AAE814D00CE8F6C /* srs_kernel_utility.hpp */, + ); + name = kernel; + sourceTree = ""; + }; + 3C12322C1AAE819900CE8F6C /* protocol */ = { + isa = PBXGroup; + children = ( + 3C12322D1AAE81A400CE8F6C /* srs_raw_avc.cpp */, + 3C12322E1AAE81A400CE8F6C /* srs_raw_avc.hpp */, + 3C12322F1AAE81A400CE8F6C /* srs_rtmp_amf0.cpp */, + 3C1232301AAE81A400CE8F6C /* srs_rtmp_amf0.hpp */, + 3C1232311AAE81A400CE8F6C /* srs_rtmp_buffer.cpp */, + 3C1232321AAE81A400CE8F6C /* srs_rtmp_buffer.hpp */, + 3C1232331AAE81A400CE8F6C /* srs_rtmp_handshake.cpp */, + 3C1232341AAE81A400CE8F6C /* srs_rtmp_handshake.hpp */, + 3C1232351AAE81A400CE8F6C /* srs_rtmp_io.cpp */, + 3C1232361AAE81A400CE8F6C /* srs_rtmp_io.hpp */, + 3C1232371AAE81A400CE8F6C /* srs_rtmp_msg_array.cpp */, + 3C1232381AAE81A400CE8F6C /* srs_rtmp_msg_array.hpp */, + 3C1232391AAE81A400CE8F6C /* srs_rtmp_sdk.cpp */, + 3C12323A1AAE81A400CE8F6C /* srs_rtmp_sdk.hpp */, + 3C12323B1AAE81A400CE8F6C /* srs_rtmp_stack.cpp */, + 3C12323C1AAE81A400CE8F6C /* srs_rtmp_stack.hpp */, + 3C12323D1AAE81A400CE8F6C /* srs_rtmp_utility.cpp */, + 3C12323E1AAE81A400CE8F6C /* srs_rtmp_utility.hpp */, + 3C12323F1AAE81A400CE8F6C /* srs_rtsp_stack.cpp */, + 3C1232401AAE81A400CE8F6C /* srs_rtsp_stack.hpp */, + ); + name = protocol; + sourceTree = ""; + }; + 3C12324B1AAE81CE00CE8F6C /* app */ = { + isa = PBXGroup; + children = ( + 3C12324C1AAE81D900CE8F6C /* srs_app_bandwidth.cpp */, + 3C12324D1AAE81D900CE8F6C /* srs_app_bandwidth.hpp */, + 3C12324E1AAE81D900CE8F6C /* srs_app_config.cpp */, + 3C12324F1AAE81D900CE8F6C /* srs_app_config.hpp */, + 3C1232501AAE81D900CE8F6C /* srs_app_conn.cpp */, + 3C1232511AAE81D900CE8F6C /* srs_app_conn.hpp */, + 3C1232521AAE81D900CE8F6C /* srs_app_dvr.cpp */, + 3C1232531AAE81D900CE8F6C /* srs_app_dvr.hpp */, + 3C1232541AAE81D900CE8F6C /* srs_app_edge.cpp */, + 3C1232551AAE81D900CE8F6C /* srs_app_edge.hpp */, + 3C1232561AAE81D900CE8F6C /* srs_app_empty.cpp */, + 3C1232571AAE81D900CE8F6C /* srs_app_empty.hpp */, + 3C1232581AAE81D900CE8F6C /* srs_app_encoder.cpp */, + 3C1232591AAE81D900CE8F6C /* srs_app_encoder.hpp */, + 3C12325A1AAE81D900CE8F6C /* srs_app_ffmpeg.cpp */, + 3C12325B1AAE81D900CE8F6C /* srs_app_ffmpeg.hpp */, + 3C12325C1AAE81D900CE8F6C /* srs_app_forward.cpp */, + 3C12325D1AAE81D900CE8F6C /* srs_app_forward.hpp */, + 3C12325E1AAE81D900CE8F6C /* srs_app_heartbeat.cpp */, + 3C12325F1AAE81D900CE8F6C /* srs_app_heartbeat.hpp */, + 3C1232601AAE81D900CE8F6C /* srs_app_hls.cpp */, + 3C1232611AAE81D900CE8F6C /* srs_app_hls.hpp */, + 3C1232621AAE81D900CE8F6C /* srs_app_http_api.cpp */, + 3C1232631AAE81D900CE8F6C /* srs_app_http_api.hpp */, + 3C1232641AAE81D900CE8F6C /* srs_app_http_client.cpp */, + 3C1232651AAE81D900CE8F6C /* srs_app_http_client.hpp */, + 3C1232661AAE81D900CE8F6C /* srs_app_http_conn.cpp */, + 3C1232671AAE81D900CE8F6C /* srs_app_http_conn.hpp */, + 3C1232681AAE81D900CE8F6C /* srs_app_http_hooks.cpp */, + 3C1232691AAE81D900CE8F6C /* srs_app_http_hooks.hpp */, + 3C12326A1AAE81D900CE8F6C /* srs_app_http.cpp */, + 3C12326B1AAE81D900CE8F6C /* srs_app_http.hpp */, + 3C12326C1AAE81D900CE8F6C /* srs_app_ingest.cpp */, + 3C12326D1AAE81D900CE8F6C /* srs_app_ingest.hpp */, + 3C12326E1AAE81D900CE8F6C /* srs_app_json.cpp */, + 3C12326F1AAE81D900CE8F6C /* srs_app_json.hpp */, + 3C1232701AAE81D900CE8F6C /* srs_app_kbps.cpp */, + 3C1232711AAE81D900CE8F6C /* srs_app_kbps.hpp */, + 3C1232721AAE81D900CE8F6C /* srs_app_listener.cpp */, + 3C1232731AAE81D900CE8F6C /* srs_app_listener.hpp */, + 3C1232741AAE81D900CE8F6C /* srs_app_log.cpp */, + 3C1232751AAE81D900CE8F6C /* srs_app_log.hpp */, + 3C1232761AAE81D900CE8F6C /* srs_app_mpegts_udp.cpp */, + 3C1232771AAE81D900CE8F6C /* srs_app_mpegts_udp.hpp */, + 3C1232781AAE81D900CE8F6C /* srs_app_pithy_print.cpp */, + 3C1232791AAE81D900CE8F6C /* srs_app_pithy_print.hpp */, + 3C12327A1AAE81D900CE8F6C /* srs_app_recv_thread.cpp */, + 3C12327B1AAE81D900CE8F6C /* srs_app_recv_thread.hpp */, + 3C12327C1AAE81D900CE8F6C /* srs_app_refer.cpp */, + 3C12327D1AAE81D900CE8F6C /* srs_app_refer.hpp */, + 3C12327E1AAE81D900CE8F6C /* srs_app_reload.cpp */, + 3C12327F1AAE81D900CE8F6C /* srs_app_reload.hpp */, + 3C1232801AAE81D900CE8F6C /* srs_app_rtmp_conn.cpp */, + 3C1232811AAE81D900CE8F6C /* srs_app_rtmp_conn.hpp */, + 3C1232821AAE81D900CE8F6C /* srs_app_rtsp.cpp */, + 3C1232831AAE81D900CE8F6C /* srs_app_rtsp.hpp */, + 3C1232841AAE81D900CE8F6C /* srs_app_security.cpp */, + 3C1232851AAE81D900CE8F6C /* srs_app_security.hpp */, + 3C1232861AAE81D900CE8F6C /* srs_app_server.cpp */, + 3C1232871AAE81D900CE8F6C /* srs_app_server.hpp */, + 3C1232881AAE81D900CE8F6C /* srs_app_source.cpp */, + 3C1232891AAE81D900CE8F6C /* srs_app_source.hpp */, + 3C12328A1AAE81D900CE8F6C /* srs_app_st_socket.cpp */, + 3C12328B1AAE81D900CE8F6C /* srs_app_st_socket.hpp */, + 3C12328C1AAE81D900CE8F6C /* srs_app_st.cpp */, + 3C12328D1AAE81D900CE8F6C /* srs_app_st.hpp */, + 3C12328E1AAE81D900CE8F6C /* srs_app_statistic.cpp */, + 3C12328F1AAE81D900CE8F6C /* srs_app_statistic.hpp */, + 3C1232901AAE81D900CE8F6C /* srs_app_thread.cpp */, + 3C1232911AAE81D900CE8F6C /* srs_app_thread.hpp */, + 3C1232921AAE81D900CE8F6C /* srs_app_utility.cpp */, + 3C1232931AAE81D900CE8F6C /* srs_app_utility.hpp */, + ); + name = app; + sourceTree = ""; + }; + 3C1232B91AAE825100CE8F6C /* scripts */ = { + isa = PBXGroup; + children = ( + 3C1232C81AAE833300CE8F6C /* _log.sh */, + 3C1232C91AAE833300CE8F6C /* build.sh */, + 3C1232CA1AAE833300CE8F6C /* git.commit.sh */, + 3C1232CB1AAE833300CE8F6C /* git2unix.sh */, + 3C1232CC1AAE833300CE8F6C /* install.sh */, + 3C1232CD1AAE833300CE8F6C /* package.sh */, + 3C1232CE1AAE833300CE8F6C /* run.sh */, + 3C1232CF1AAE833300CE8F6C /* srs.test */, + 3C1232D01AAE833300CE8F6C /* stop.sh */, + 3C1232D11AAE833300CE8F6C /* test_configure.sh */, + ); + name = scripts; + sourceTree = ""; + }; + 3C1232BA1AAE826F00CE8F6C /* auto */ = { + isa = PBXGroup; + children = ( + 3C1232BB1AAE827E00CE8F6C /* apps.sh */, + 3C1232BC1AAE827E00CE8F6C /* auto_headers.sh */, + 3C1232BD1AAE827E00CE8F6C /* build_ffmpeg.sh */, + 3C1232BE1AAE827E00CE8F6C /* depends.sh */, + 3C1232BF1AAE827E00CE8F6C /* generate_header.sh */, + 3C1232C01AAE827E00CE8F6C /* generate-srs-librtmp-project.sh */, + 3C1232C11AAE827E00CE8F6C /* generate-srs-librtmp-single.sh */, + 3C1232C21AAE827E00CE8F6C /* libs.sh */, + 3C1232C31AAE827E00CE8F6C /* local_ip.sh */, + 3C1232C41AAE827E00CE8F6C /* modules.sh */, + 3C1232C51AAE827E00CE8F6C /* options.sh */, + 3C1232C61AAE827E00CE8F6C /* summary.sh */, + 3C1232C71AAE827E00CE8F6C /* utest.sh */, + ); + name = auto; + sourceTree = ""; + }; + 3C1232EE1AAEA71C00CE8F6C /* links */ = { + isa = PBXGroup; + children = ( + 3C1232EC1AAEA70F00CE8F6C /* libhttp_parser.a */, + 3C1232D21AAEA56B00CE8F6C /* libst.a */, + 3C1232E81AAEA5D000CE8F6C /* libssl.a */, + 3C1232E71AAEA5D000CE8F6C /* libcrypto.a */, + ); + name = links; + sourceTree = ""; + }; + 3C1232EF1AAEAC5800CE8F6C /* etc */ = { + isa = PBXGroup; + children = ( + 3C1232F01AAEAC5D00CE8F6C /* init.d */, + ); + name = etc; + sourceTree = ""; + }; + 3C1232F01AAEAC5D00CE8F6C /* init.d */ = { + isa = PBXGroup; + children = ( + 3C1232F11AAEAC7000CE8F6C /* srs */, + 3C1232F21AAEAC7000CE8F6C /* srs-api */, + 3C1232F31AAEAC7000CE8F6C /* srs-demo */, + 3C1232F41AAEAC7000CE8F6C /* srs-demo-19350 */, + ); + name = init.d; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3C1231E41AAE64A400CE8F6C /* srs_xcode */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3C1231EC1AAE64A400CE8F6C /* Build configuration list for PBXNativeTarget "srs_xcode" */; + buildPhases = ( + 3C1231E11AAE64A400CE8F6C /* Sources */, + 3C1231E21AAE64A400CE8F6C /* Frameworks */, + 3C1231E31AAE64A400CE8F6C /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = srs_xcode; + productName = srs_xcode; + productReference = 3C1231E51AAE64A400CE8F6C /* srs_xcode */; + productType = "com.apple.product-type.tool"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3C1231DD1AAE64A400CE8F6C /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + ORGANIZATIONNAME = winlin; + TargetAttributes = { + 3C1231E41AAE64A400CE8F6C = { + CreatedOnToolsVersion = 6.1.1; + }; + }; + }; + buildConfigurationList = 3C1231E01AAE64A400CE8F6C /* Build configuration list for PBXProject "srs_xcode" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3C1231DC1AAE64A400CE8F6C; + productRefGroup = 3C1231E61AAE64A400CE8F6C /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3C1231E41AAE64A400CE8F6C /* srs_xcode */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 3C1231E11AAE64A400CE8F6C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3C1232951AAE81D900CE8F6C /* srs_app_config.cpp in Sources */, + 3C1232961AAE81D900CE8F6C /* srs_app_conn.cpp in Sources */, + 3C12322A1AAE814D00CE8F6C /* srs_kernel_ts.cpp in Sources */, + 3C12329E1AAE81D900CE8F6C /* srs_app_hls.cpp in Sources */, + 3C1232971AAE81D900CE8F6C /* srs_app_dvr.cpp in Sources */, + 3C1232271AAE814D00CE8F6C /* srs_kernel_log.cpp in Sources */, + 3C1232A81AAE81D900CE8F6C /* srs_app_log.cpp in Sources */, + 3C1232A41AAE81D900CE8F6C /* srs_app_ingest.cpp in Sources */, + 3C1232B41AAE81D900CE8F6C /* srs_app_st.cpp in Sources */, + 3C1232481AAE81A400CE8F6C /* srs_rtmp_stack.cpp in Sources */, + 3C1232B01AAE81D900CE8F6C /* srs_app_security.cpp in Sources */, + 3C12322B1AAE814D00CE8F6C /* srs_kernel_utility.cpp in Sources */, + 3C12324A1AAE81A400CE8F6C /* srs_rtsp_stack.cpp in Sources */, + 3C1232A51AAE81D900CE8F6C /* srs_app_json.cpp in Sources */, + 3C12329F1AAE81D900CE8F6C /* srs_app_http_api.cpp in Sources */, + 3C1232A11AAE81D900CE8F6C /* srs_app_http_conn.cpp in Sources */, + 3C1232AC1AAE81D900CE8F6C /* srs_app_refer.cpp in Sources */, + 3C1232991AAE81D900CE8F6C /* srs_app_empty.cpp in Sources */, + 3C1232201AAE814D00CE8F6C /* srs_kernel_aac.cpp in Sources */, + 3C1232941AAE81D900CE8F6C /* srs_app_bandwidth.cpp in Sources */, + 3C1232221AAE814D00CE8F6C /* srs_kernel_codec.cpp in Sources */, + 3C1232B71AAE81D900CE8F6C /* srs_app_utility.cpp in Sources */, + 3C1232AB1AAE81D900CE8F6C /* srs_app_recv_thread.cpp in Sources */, + 3C1231F61AAE652D00CE8F6C /* srs_core_autofree.cpp in Sources */, + 3C1232411AAE81A400CE8F6C /* srs_raw_avc.cpp in Sources */, + 3C1232491AAE81A400CE8F6C /* srs_rtmp_utility.cpp in Sources */, + 3C1232A01AAE81D900CE8F6C /* srs_app_http_client.cpp in Sources */, + 3C12329B1AAE81D900CE8F6C /* srs_app_ffmpeg.cpp in Sources */, + 3C1232421AAE81A400CE8F6C /* srs_rtmp_amf0.cpp in Sources */, + 3C1232AA1AAE81D900CE8F6C /* srs_app_pithy_print.cpp in Sources */, + 3C12329C1AAE81D900CE8F6C /* srs_app_forward.cpp in Sources */, + 3C1232251AAE814D00CE8F6C /* srs_kernel_file.cpp in Sources */, + 3C1232AD1AAE81D900CE8F6C /* srs_app_reload.cpp in Sources */, + 3C1231F81AAE652D00CE8F6C /* srs_core.cpp in Sources */, + 3C1232A21AAE81D900CE8F6C /* srs_app_http_hooks.cpp in Sources */, + 3C1232B11AAE81D900CE8F6C /* srs_app_server.cpp in Sources */, + 3C1232B31AAE81D900CE8F6C /* srs_app_st_socket.cpp in Sources */, + 3C1232061AAE812C00CE8F6C /* srs_main_server.cpp in Sources */, + 3C1232281AAE814D00CE8F6C /* srs_kernel_mp3.cpp in Sources */, + 3C1232B21AAE81D900CE8F6C /* srs_app_source.cpp in Sources */, + 3C1231F71AAE652D00CE8F6C /* srs_core_performance.cpp in Sources */, + 3C1232981AAE81D900CE8F6C /* srs_app_edge.cpp in Sources */, + 3C1232461AAE81A400CE8F6C /* srs_rtmp_msg_array.cpp in Sources */, + 3C1232A71AAE81D900CE8F6C /* srs_app_listener.cpp in Sources */, + 3C1232261AAE814D00CE8F6C /* srs_kernel_flv.cpp in Sources */, + 3C1232241AAE814D00CE8F6C /* srs_kernel_error.cpp in Sources */, + 3C1232441AAE81A400CE8F6C /* srs_rtmp_handshake.cpp in Sources */, + 3C1232291AAE814D00CE8F6C /* srs_kernel_stream.cpp in Sources */, + 3C1232B61AAE81D900CE8F6C /* srs_app_thread.cpp in Sources */, + 3C1232A91AAE81D900CE8F6C /* srs_app_mpegts_udp.cpp in Sources */, + 3C1232AE1AAE81D900CE8F6C /* srs_app_rtmp_conn.cpp in Sources */, + 3C1232B51AAE81D900CE8F6C /* srs_app_statistic.cpp in Sources */, + 3C1232451AAE81A400CE8F6C /* srs_rtmp_io.cpp in Sources */, + 3C1232431AAE81A400CE8F6C /* srs_rtmp_buffer.cpp in Sources */, + 3C1232211AAE814D00CE8F6C /* srs_kernel_buffer.cpp in Sources */, + 3C1232471AAE81A400CE8F6C /* srs_rtmp_sdk.cpp in Sources */, + 3C1232A61AAE81D900CE8F6C /* srs_app_kbps.cpp in Sources */, + 3C12329D1AAE81D900CE8F6C /* srs_app_heartbeat.cpp in Sources */, + 3C1232231AAE814D00CE8F6C /* srs_kernel_consts.cpp in Sources */, + 3C1232AF1AAE81D900CE8F6C /* srs_app_rtsp.cpp in Sources */, + 3C1232A31AAE81D900CE8F6C /* srs_app_http.cpp in Sources */, + 3C12329A1AAE81D900CE8F6C /* srs_app_encoder.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3C1231EA1AAE64A400CE8F6C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 3C1231EB1AAE64A400CE8F6C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + 3C1231ED1AAE64A400CE8F6C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++98"; + CLANG_CXX_LIBRARY = "libstdc++"; + LIBRARY_SEARCH_PATHS = ( + "../../objs/**", + "/Users/winlin/Desktop/git/simple-rtmp-server/trunk/objs/http-parser-2.1", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + "USER_HEADER_SEARCH_PATHS[arch=*]" = "../../src/** ../../objs ../../objs/st ../../objs/hp ../../objs/openssl"; + }; + name = Debug; + }; + 3C1231EE1AAE64A400CE8F6C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = YES; + CLANG_CXX_LANGUAGE_STANDARD = "c++98"; + CLANG_CXX_LIBRARY = "libstdc++"; + LIBRARY_SEARCH_PATHS = ( + "../../objs/**", + "/Users/winlin/Desktop/git/simple-rtmp-server/trunk/objs/http-parser-2.1", + ); + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3C1231E01AAE64A400CE8F6C /* Build configuration list for PBXProject "srs_xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3C1231EA1AAE64A400CE8F6C /* Debug */, + 3C1231EB1AAE64A400CE8F6C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3C1231EC1AAE64A400CE8F6C /* Build configuration list for PBXNativeTarget "srs_xcode" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3C1231ED1AAE64A400CE8F6C /* Debug */, + 3C1231EE1AAE64A400CE8F6C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3C1231DD1AAE64A400CE8F6C /* Project object */; +} diff --git a/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..60847b6bd --- /dev/null +++ b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.xcworkspace/xcuserdata/winlin.xcuserdatad/UserInterfaceState.xcuserstate b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.xcworkspace/xcuserdata/winlin.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 000000000..d14fd47ad Binary files /dev/null and b/trunk/ide/srs_xcode/srs_xcode.xcodeproj/project.xcworkspace/xcuserdata/winlin.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/trunk/ide/srs_xcode/srs_xcode/readme.txt b/trunk/ide/srs_xcode/srs_xcode/readme.txt new file mode 100644 index 000000000..94cb20b46 --- /dev/null +++ b/trunk/ide/srs_xcode/srs_xcode/readme.txt @@ -0,0 +1 @@ +the xcode project for osx. diff --git a/trunk/src/app/srs_app_st.cpp b/trunk/src/app/srs_app_st.cpp index cac863200..4160f9464 100644 --- a/trunk/src/app/srs_app_st.cpp +++ b/trunk/src/app/srs_app_st.cpp @@ -26,6 +26,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include +#ifndef SRS_OSX #include bool srs_st_epoll_is_supported(void) { @@ -38,11 +39,13 @@ bool srs_st_epoll_is_supported(void) return (errno != ENOSYS); } +#endif int srs_init_st() { int ret = ERROR_SUCCESS; +#ifndef SRS_OSX // check epoll, some old linux donot support epoll. // @see https://github.com/winlinvip/simple-rtmp-server/issues/162 if (!srs_st_epoll_is_supported()) { @@ -58,6 +61,7 @@ int srs_init_st() return ret; } srs_verbose("st_set_eventsys use linux epoll success"); +#endif if(st_init() != 0){ ret = ERROR_ST_INITIALIZE; diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index 37cbf487c..1ee018e04 100644 --- a/trunk/src/core/srs_core.hpp +++ b/trunk/src/core/srs_core.hpp @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // current release version #define VERSION_MAJOR 2 #define VERSION_MINOR 0 -#define VERSION_REVISION 136 +#define VERSION_REVISION 137 // server info. #define RTMP_SIG_SRS_KEY "SRS" diff --git a/trunk/src/kernel/srs_kernel_utility.cpp b/trunk/src/kernel/srs_kernel_utility.cpp index 3a2eeebda..e725c722f 100644 --- a/trunk/src/kernel/srs_kernel_utility.cpp +++ b/trunk/src/kernel/srs_kernel_utility.cpp @@ -437,7 +437,9 @@ u_int32_t srs_crc32(const void* buf, int size) * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifndef UINT_MAX #define UINT_MAX 0xffffffff +#endif #ifndef AV_RB32 # define AV_RB32(x) \ diff --git a/trunk/src/main/srs_main_server.cpp b/trunk/src/main/srs_main_server.cpp index c82a8edbe..95b9b80cd 100644 --- a/trunk/src/main/srs_main_server.cpp +++ b/trunk/src/main/srs_main_server.cpp @@ -177,6 +177,23 @@ void show_macro_features() void check_macro_features() { + // important preset. +#ifdef SRS_OSX + srs_trace("SRS for OSX"); +#endif +#ifdef SRS_PI + srs_trace("SRS for pi"); +#endif +#ifdef SRS_CUBIE + srs_trace("SRS for cubieboard"); +#endif +#ifdef SRS_ARM_UBUNTU12 + srs_trace("SRS for arm(build on ubuntu)"); +#endif +#ifdef SRS_MIPS_UBUNTU12 + srs_trace("SRS for mips(build on ubuntu)"); +#endif + // for special features. #ifndef SRS_PERF_MERGED_READ srs_warn("MR(merged-read) is disabled, hurts read performance. @see %s", RTMP_SIG_SRS_ISSUES(241)); @@ -252,8 +269,8 @@ int main(int argc, char** argv) srs_trace("conf: %s, limit: %d", _srs_config->config().c_str(), _srs_config->get_max_connections()); // features - show_macro_features(); check_macro_features(); + show_macro_features(); /** * we do nothing in the constructor of server, diff --git a/trunk/src/protocol/srs_rtmp_handshake.cpp b/trunk/src/protocol/srs_rtmp_handshake.cpp index e21f1336b..042a52b53 100644 --- a/trunk/src/protocol/srs_rtmp_handshake.cpp +++ b/trunk/src/protocol/srs_rtmp_handshake.cpp @@ -73,7 +73,7 @@ namespace _srs_internal int __openssl_HMACsha256(HMAC_CTX* ctx, const void* data, int data_size, void* digest, unsigned int* digest_size) { int ret = ERROR_SUCCESS; - +#ifndef SRS_OSX if (HMAC_Update(ctx, (unsigned char *) data, data_size) < 0) { ret = ERROR_OpenSslSha256Update; return ret; @@ -83,6 +83,10 @@ namespace _srs_internal ret = ERROR_OpenSslSha256Final; return ret; } +#else + HMAC_Update(ctx, (unsigned char *) data, data_size); + HMAC_Final(ctx, (unsigned char *) digest, digest_size); +#endif return ret; } @@ -117,10 +121,14 @@ namespace _srs_internal // for instance, in python, hashlib.sha256(data).digest(). HMAC_CTX_init(&ctx); +#ifndef SRS_OSX if (HMAC_Init_ex(&ctx, __key, key_size, EVP_sha256(), NULL) < 0) { ret = ERROR_OpenSslSha256Init; return ret; } +#else + HMAC_Init_ex(&ctx, __key, key_size, EVP_sha256(), NULL); +#endif ret = __openssl_HMACsha256(&ctx, data, data_size, __digest, &digest_size); HMAC_CTX_cleanup(&ctx);