From e7ccbce47239a82ccbc9f48bbf1c0cf20a8dc17c Mon Sep 17 00:00:00 2001 From: winlin Date: Tue, 25 Nov 2014 10:41:55 +0800 Subject: [PATCH] update PRIMARY, AUTHORS, CONTRIBUTORS rule. 2.0.32. --- AUTHORS.txt | 5 ++++ README.md | 1 + trunk/research/librtmp/srs_bandwidth_check.c | 18 ++++++++----- .../players/srs_bwt/release/srs_bwt.swf | Bin 6474 -> 6547 bytes .../players/srs_bwt/src/SrsBandwidth.as | 21 +++++++++------ .../players/srs_bwt/src/srs.bandwidth.js | 10 ++++---- trunk/research/players/srs_bwt/src/srs_bwt.as | 13 ++++++---- .../players/srs_player/release/srs_player.swf | Bin 5573 -> 5635 bytes .../players/srs_player/src/srs_player.as | 24 +++++++++++++----- .../srs_publisher/release/srs_publisher.swf | Bin 5585 -> 5642 bytes .../srs_publisher/src/srs_publisher.as | 17 +++++++++---- trunk/src/app/srs_app_config.cpp | 3 ++- trunk/src/app/srs_app_edge.cpp | 6 +++-- trunk/src/app/srs_app_forward.cpp | 3 ++- trunk/src/app/srs_app_http_api.cpp | 3 ++- trunk/src/app/srs_app_source.cpp | 3 ++- trunk/src/core/srs_core.hpp | 5 ++-- trunk/src/libs/srs_librtmp.cpp | 13 ++++++---- trunk/src/libs/srs_librtmp.hpp | 6 +++-- trunk/src/main/srs_main_server.cpp | 3 ++- trunk/src/rtmp/srs_protocol_rtmp.cpp | 20 ++++++++++----- trunk/src/rtmp/srs_protocol_rtmp.hpp | 8 +++--- 22 files changed, 119 insertions(+), 63 deletions(-) diff --git a/AUTHORS.txt b/AUTHORS.txt index ac4806f57..07f3b07d0 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -1,3 +1,8 @@ +There are three types of people that have contributed to the SRS project: +1. PRIMARY: Contribute important features and >10% code. Names of all PRIMARY response in NetConnection.connect and metadata. +2. AUTHORS: Contribute features and 1%~10% code. Names of all PRIMARY response in NetConnection.connect and metadata. +3. CONTRIBUTORS: Submit patches, report bugs, add translations, help answer newbie questions, and generally make SRS that much better. + PRIMARY ordered by first contribution. * winlin "Plan, arch, implement SRS1.0 and SRS2.0" diff --git a/README.md b/README.md index f524d1fae..c674ad2b8 100755 --- a/README.md +++ b/README.md @@ -485,6 +485,7 @@ Supported operating systems and hardware: * 2013-10-17, Created.
## History +* v2.0, 2014-11-25, update PRIMARY, AUTHORS, CONTRIBUTORS rule. 2.0.32. * v2.0, 2014-11-24, fix [#212](https://github.com/winlinvip/simple-rtmp-server/issues/212), support publish aac adts raw stream. 2.0.31. * v2.0, 2014-11-22, fix [#217](https://github.com/winlinvip/simple-rtmp-server/issues/217), remove timeout recv, support 7.5k+ 250kbps clients. 2.0.30. * v2.0, 2014-11-21, srs-librtmp add rtmp prefix for rtmp/utils/human apis. 2.0.29. diff --git a/trunk/research/librtmp/srs_bandwidth_check.c b/trunk/research/librtmp/srs_bandwidth_check.c index 46e8dc206..3a3fac75b 100644 --- a/trunk/research/librtmp/srs_bandwidth_check.c +++ b/trunk/research/librtmp/srs_bandwidth_check.c @@ -43,7 +43,8 @@ int main(int argc, char** argv) // srs debug info. char srs_server_ip[128]; char srs_server[128]; - char srs_primary_authors[128]; + char srs_primary[128]; + char srs_authors[128]; char srs_version[32]; int srs_id = 0; int srs_pid = 0; @@ -60,7 +61,8 @@ int main(int argc, char** argv) // set to zero. srs_server_ip[0] = 0; srs_server[0] = 0; - srs_primary_authors[0] = 0; + srs_primary[0] = 0; + srs_authors[0] = 0; srs_version[0] = 0; printf("RTMP bandwidth check/test with server.\n"); @@ -90,7 +92,8 @@ int main(int argc, char** argv) srs_human_trace("simple handshake success"); if ((ret = srs_rtmp_connect_app2(rtmp, - srs_server_ip, srs_server, srs_primary_authors, srs_version, &srs_id, &srs_pid)) != 0) { + srs_server_ip, srs_server, srs_primary, srs_authors, srs_version, + &srs_id, &srs_pid)) != 0) { srs_human_trace("connect vhost/app failed."); goto rtmp_destroy; } @@ -105,12 +108,12 @@ int main(int argc, char** argv) } srs_human_trace("bandwidth check/test success"); - srs_human_trace("\n%s, %s\n" + srs_human_trace("\n%s, %s, %s\n" "%s, %s, srs_pid=%d, srs_id=%d\n" "duration: %dms(%d+%d)\n" "play: %dkbps\n" "publish: %dkbps", - (char*)srs_server, (char*)srs_primary_authors, + (char*)srs_server, (char*)srs_primary, (char*)srs_authors, (char*)srs_server_ip, (char*)srs_version, srs_pid, srs_id, (int)(end_time - start_time), play_duration, publish_duration, play_kbps, @@ -121,7 +124,8 @@ rtmp_destroy: fprintf(stderr, "{\"code\":%d," "\"srs_server\":\"%s\", " - "\"srs_primary_authors\":\"%s\", " + "\"srs_primary\":\"%s\", " + "\"srs_authors\":\"%s\", " "\"srs_server_ip\":\"%s\", " "\"srs_version\":\"%s\", " "\"srs_pid\":%d, " @@ -132,7 +136,7 @@ rtmp_destroy: "\"publish_kbps\":%d" "}", ret, - (char*)srs_server, (char*)srs_primary_authors, + (char*)srs_server, (char*)srs_primary, (char*)srs_authors, (char*)srs_server_ip, (char*)srs_version, srs_pid, srs_id, (int)(end_time - start_time), play_duration, publish_duration, play_kbps, publish_kbps); diff --git a/trunk/research/players/srs_bwt/release/srs_bwt.swf b/trunk/research/players/srs_bwt/release/srs_bwt.swf index 79d45e5855731230b642b36ee60b2ef7e16f9d7a..024d7771851252d961fb244dd6b49523ada56be4 100755 GIT binary patch literal 6547 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 FzeI;$3`_t3 literal 6474 zcmV-Q8MWp^S5povEdT&`0kv8QcpSx*uIlcYnx2tHqib~e7#rEL?6EW&-NH7OEsc-h z1Iy;LQ0D0I3?9uWb4Yd)5*aW7YzP=I0Yb33?<){ULPD}j5=gR}vAw{z-zM2_No)+s zqE0ru*(Cd+{i~~WA_!mhTYc{Ls@{9`>eZ`PJ>7qMA5q>W#Q6{*m6Y@pR}n(KSo#x6 z$f|TC+O?x6;Mq5rNM^dwTU{5+W{0{O8%IV)8b+EMQt3U7O`V;cjXr;)-@g(TD>M6( z+2FpF$;>%*YYYcHS|*&14`t)2q=!2UhElog>bg49Ya~4BbSRfj7%n5>MlGQYYRPP- zv8ka6jw0c%XevDz%&rLz4JG2?Aa~ceZ)GNy3hx~W4r?o;iC`wSs&UGYkIBZf32jYx zBo)#;frPft)8gr#8gEz&6K))t3Utl1Wd`}^hHz@IaVVXNkGBuJktfr*gCY;uS+0;yn2^rTXg2_F(;2v#F?^a{6;@X)d$e%_YT`9}CY>1wjbzCyWk*T~frv~^;-%Z(sq;W^r zZnSr&wTu=_hhw{k62bi%1f~Ia_}p{NPD3zL(3j4v3nn8Y@klnNh9+8;Ocn{T^bVsU z3XF|z(0DuJ?C$C5?HSm)ZJ=*w_l90~W`8ED4GyG|1HnjSAe$O62D;EO#-1OCI;o|L z%o!U^E^EVC>)`$^S~BPC<5Ts8g9&X*DxwvN*&^`_kKDEu6Rqz)zgNvn7}yQ_?nHb~ z(zbKk_JQ+z13N82-gT@`C9~STEca>?ZgO!~EFRI;<>HC#rsO7snsJ14nQUs%XctWz z!3E`gJNiz)^w8<2zH{b@&5eGaudOk}y~mS| z@YM80;g}ZQJ208gr4#EPO2>y$J6&_=B$y4lAVPMt zxy(Q~hLY8+ec5z8xrYsD=`i-j0X+`P9&CNax-~Z#($YrhWVH0KmM-NHVD`aadjCK$ zmyM;;87r5?BS!HI#Uq8hE360NLuI)k%&HBTs~U*&p)0g-R*FXo%q*j>Ykg%i3aP6PYtL%6Gle~(%7g=63&A*wb>U2- zO(?2#Fr1AKYr?Q*rhbN#c|s=+OP6s5xIUQ0iqa)m;$%sP?d7XBb^&YRYBT8*`^fj) z6p5`b9>C_$C@t#%svb8nYNWUk9&@$fvU==1IB@)UVQ z9?#tIjd$;O9+i|$1>*a(h~jzY;UjZZ>%=Ll7#P@-;y>Fs0>*s1;{?NVIJwrcvOP@Ef&M+PXXD?RqH#Pf}rnb&Dmxa0|x6SQxSJ>uP zNS3vgw3=3TSFfvHU)@vPD-}@5%519LQBdeC+Q1}*Q451eW=v8UwKK`Vlp-b-GpU3r zrA#VgQaQ7@nN-Q7DrTu>)_F`?!019IEn;jjqvtSbDU<3Lt!L75MtzKSGKn(jTqdnz z(rPBHQO~1lfT|m)x{<1zsM-nb`Apiv*jC22F}9tt3mDtMSRZ3M8QaC!g^XRq*u{)p z!q}yZUB;w-MhBRLNi`{M_>)Fgcvm(w+RAIpKWVhd-`vvL*4{zNcT1%F)9_Fe zp0wX9?76Qmz}M8cYw6TLOzrp*rPtBxslg5jc37|*1-nVGFAH|FV7CZ%gnoq&zf<(? zqIAJJRV7rF*5c8blCHI+>IRBGYd4XoRMt&wRIcbIDpjhxiJe;JbrT1*R(6vD%I0^I zLTbY^x05dDp+r*cMTAnDD(8J0AeE_VU-LUzZ_WGkhI~KWOi4`A+wz-;-ky)jM@z~G z(L3_}N>qtj@=Z+w^fhqMZ;RTZ zYS6Bq$2*RwBU%tF)YtVpH#^Cw^G$vI$v_dQ*LzMzUH!%0nx&hIr9cVX_U2CpOZ5%; zKpC_fF^5d4-Cl$_KHcw*x&svu2O(Bu*>0~HqqQV7MwieK48q*t#K}OVRIf*1Vv!`f zy?l%=BO0_(LmQ~Z9DAU&TCH|_;}~5*Vq?@xK~_p24Khfh62pMFaCa)Cge-x1mU{gP z3}dQlxA%sFNtYhLe>xq*#h%z_4*)u*_@KS z;D00-ZO;2HTK)!7*hMyL)HAwZkm~1aG;cI^pb=dd^+XqqE*_NhK8fL;BP}O&%@u`D@c6~sjYvs}UK?iaWLR&$*0BsFz3)+Qf$I!N- z?L>Po+6--84yk-p(uc5q2d)BKg}9u!iuBKb%D5C<43`y`1(!`vgQ~dff#rqudTs+L zaud3MtRT{2;w5qwSxJ;CyqH?5NF%XU5g%byq>0$7h@Yrcq?y>ONDFb)lU7ntPufUf zJ!vP-deT9P>WM1jke!FnM)+yiO7`jdCO7U4{c|Ux=Nv7m#tHg-f2a5Ie6;IWpcBP- zCDwsX;9RsvDayjm-7JEe1C;w&Mh;N@DvB||6UV$EG3aV;=untye}lsE8pCo0xrXvu z=5(dRX@ksZqrz#G<$9`LPjT2Hn~Uj%baYkNs^36QcuMhNt{3388tH{O)o;=sXgsA$xJUIy?na8N>VhYiH zTr_Bi?x(I^E_#rQl7{FZ>hg2ZBV3d+M2}L}LN0ooi-t}f^L|Do`U&b{T>cc7rw!Am zsp}7X+Gn{a1JkT9eU7?*&gIW@dCo9>fx2FY$n`2xbq_u9mUmeH8a-7Fuw)5w-AIUc zL_co!sq0Gg_vsIqeaSV5K@Zb@8l}kj9u3pHV6teS#%;IW->=_|j zD`ZyJeE7do|GMd)xe5uXE8(Ho_}ycP%_i4eG(K*7;e+wlJ{bR(560jBV4RMRSB;N* z$H#ld$Dz|-dK(e^U+ zj#B+)6v{F00eZ}P6+L!Jw63Q5cj&SHnv*AvFFDKZ57f|F8t8_}L3-?9Sk=Fa+=f&m zx3BP6oDzQ0I`cjRQ?HT!#nHvS{`JxIzW$zQkFUQs+Ux5NL<7G5b%#L#KCYL~VV@dm`9!c<-?ZfegQ%L`Z=Bxw|9Bz(@O%DTukdrf?9W03 z{?_+=dq&Id1e61~*&%R{TsEG_luUtLzy%BlqGEbB8mA!^8~~eyGE9I=#(Q}MMgjp$ z%tjjK&2Tge11Ojn#6gJS8J32mcOQ_QWH4d8MMMD?I8F4%l&isEyk7=G2~D60l~-gu z$yC;3EWzu^ruTaifXLDf4&a^Z5nU)4-mCC1>t;+g0a1K74`l-!m6^Z}Oz5R>#`~%& zVoGXRJK!Ai1=uN&sNN*dK|p{?_m+UqnKE#&2^kPX@k%-m4N;iuIdTMHI?G>k*KugB ze5R7i;jd<=0fj9ISRka%tle$N&)JI7bAB zg9)@}RF#1{{&k?Z+PJrQ_-)REEy#L36V6vVyq*c?tLI8I_GWS;N{rfpuPH>hY0kCG z%=paxH^I~8pJ1R_8_tPf@fw}T1|0^bE7}T2C1fn1fTxYy@5J(apTPHw3Y(*XhP24! zy64`o=`${#W5qmk)5=gaA!#k$@`=KmRpbUBuX0p=AOoP4#s%2t?@RZ2IOO3mO3lL! zJkfM&&?CybF5@xhMK}${pYd^_a%RA0ps=Yh%?+R(x77gv|B-~2UNC3SlWQt6vLTks zx1f1W^O=(xTQDs{1>pp~Aep!G+BqG}n&of%I571&VCH9n86O8$%sKze1x(yZ6pj`f zpG};xU}oD$a(g<3PbAs>|Cg^JACDo<|ETbc!#VMRrhZPVxqbo6&o^`bihTIke=LgU z_qF&GzaI#fzon^N@wYX#P5(sD?rUkC{k2NzY-(>;`0gs5EiKI!Kx0jamziJxoR{jEMuJDWh8o4KU9gIl&3?benywA*}K+wN=Uw3TZ+n)s-WR?O1g z(Fu8nud`jr;UQe+KfR6q{ZU*wKg?@cEW+bsm0gKX@}3^_wx|2$j(ksK#&%H zOM5eHTASNA?P$TMc7HQ0J32dI+1cFL{#P(TL zVH8MUEmMF5E(1iwq!mo^GTOi_jf^%ii=Ro&Olo1YmC-gv+Zo;hfD_U#Mh%?M3Y_pf zCaq;sHRK0?#d#ReB>L68< zR83KJ2=-|;Lz$XYcT+V>)f{Csrw)S-t0SNz>ORnY>V8nbiC6 zbi%WL0Vymi=YMYVZ~iEdQ&(|GX<50uqOyvXxz8D0M9P*BQnr$yw~qIE&}!K_+6%hf zpcjtzlCq1r^fKOx@K%(!V!ZVkZsYwNrx#v1`gy6$?f&9*0OvBhc@TI_q6g?z)L>T& zc8y>M1^bd<*9&$?u)~7gDA-MceOa)Z1-nJCBZA#3*lmK{F4$4Q?hx!Ng54?DU4q>$ z*jEL+N3gF6c1*D2g54+B{enFp*n@&SB-q1(JtEknf;}eK!#NlEcCvMG}Zh1}RoRN-Q9yR**6VQf>ors~{D2 zkV*$gRl$|OzVau67X50P4=F(_$GT1inSPMwPX%rIwUAnZs(u}~6=?JI;P#*cz*auQ zf(5{}@*x|5=fmJ?(5c@D?g$p?Uj{D#)O0g=VX#;~Lih*^uF>l0}_YrA>{y5M;m#4HCc25|i(9K6H0`m~pQ_vL) z-P5M7I3KMvbk9KtRE|URUzhR$3nF;|q5@(54b!|JAGHVO!_`X?qO=xai4XB8zlkWv z=pyn>N&gl`^L4x|<&lmB2=Wyv-@kD4LK5@n--Am}|Dx!k=;Gix`uBOy+p7N^c&)ch ze-(U*w_X1M_)>3&{zLFOZ>Rnm_%d&o{yKQQ_gwwQ;LCTh;0pbxXnFd*QEzl5Tm%{r z**|d6i9jPJ{ux4$jS%uYT-=)#OC6#;!E<_&+YOiSM4jTzfDb|cla%)$%s08YO;!|3 z80J4W7S~IDj!F*DUx03qektj{kWNIKa&PLt1o!9O(*Koj%Vq$2p8_0Z?9RV&zuxmb zM#kQj@{t74xIi-^`!yo78i#rmSRkG#+>Smq`$)zc7-XHXL*Ltnwqml5bqj6 zya#%L{2S06%5OpYEbmMDyJlGLnPL3~yfqhA^xvYo5!aKgC+4es{w(WImI3I;&4rC)0RcLSTf_$GfUJ+oBD)8`d3LXs zc`h#z9uCU9>^se9u9c0<%0_0dlk>H!j4-a3F-@U@X$CRP4ft?XOWqozyU8KU(NB+q zUM}4y>xbn2uFYL!wCfH1xV+>VmU+_!NL$tKmrr;sEB)G9_PoZJ#+B34)wP)qYU3*TRzH86RAKJBV$oar(l=VwU%B4n9zRBY& z;s;>`!uuA&(_g`YR-q2~7rXDt{rLK}DzFAM`h5%{Skm9~AufkqvAoBZ^s2d}R}p%g z{s8m}>4%_us{bS6RXwF{g!?l&f71BChEHQQd>m5) zDn5>#fI*R`6c1MVNtxd`!63n{OFt#gvY&6S*WbiKBSv=qSr+%MU+^Ut;|5?kB4f#K zn@fIM)_*1U*PMuMh;B3v_-Vwn!Mi)Ki4HFxE@6b!bKU0QlJ_z98Lo_O2A2ORI$Q#{ zTz^N-8=~m>u`T+$rh0f%{oaInYiyhTTT?wUss8r~_4e2W`k1NSH>uVq)H`B*`tMEk z{z>(JOsIFpcIp3xd{{lD6^QANay}p3l8hRo?H1w^mkq8OEM3zzU!98tspzK#1UwP35a!{6O(`xL{w+y8b_B{@pN?ih(2sAF_XF#U*1>%vN3kTP8yxT zSi0Zvg_6doZ>cX>7|+oH!oabDqn*>1sk6}y(ez;BP$nJAM&XkQQ+)9BA3wm+G$ z;zp)3o7$dAkEA%NAZ3_n#?bBbOvI#&>63bDAgd357@ghg`RFO0`>5MS=lb-pFVIr& z3pDwc3OAT^c_WMNv}org*uYMytRg#a{e~qQgT1|*H}rH#xpM6CjDKAfzf+b=tK{Ry zk6+?dpmL+B?uRcCDC-v!@2o*iyyCSoR%9rt?=Ujb^VOqgN)n{fG+~9*ASq*GA8HWa zD^G`ixAb&e2H<5G!!qYu4#1eXB(6IHGZtJeT#GsKW z=G)znwG&CJSO9D$clQou61Gt))UkxcrYMi5Q+6hujF?trP`9?bEF1B4bq^!KN(9ni zeXA_k)z#e<>Dv(L?F+8%uCaDlwlNqmA%r5xbSm-Lo zu!^Vtp-d^TMFqs%g74>b{7+KdH>T~IgE#sQrsGc+~Ovj9(_3&s_ za9y{@niQ3XvdLsG^2SJUo5i6`>(&9()7`y(Zq_m~%xms$!~_yY5Xd5UzABzb#=QN1 zS=&yhm~HQcX~4M+*Q#}ER$WjvIXa4SwmmYOh#BePRfwQ5YF}uivPJpOCyH5E^TLWa zVCQ8MNqbFd4Ps`gnRMFrCewP%$gD}3Y44Dp(Xod{#&U1y-)2N@IT0(1>(+*m)W%GD z$jI0`&d8s-!ifv^Ha7;EnwB;8Gt-HGl&d?FNoQscW-Z%i4H?mdnJ_G$9XEW5Sa~7z z$eP-w>KQrEArhl@rm#ySh;WFlQBPn$PoD`|gH>kqsGS%#1n`uZ`WZ$}6*`0GQwI+# z)9ZE=Rl&8*ioj9qjL7^5NnE=}?E$iP)^}QN%2zCwc5l zJ!+KYuD1xO}*+HXhQY=^xEEskqrf1406?q;bSkJVo zrYlfHti%<}98>n&Q|1J#GB?jYX}DmGud_rHF3Sctc$Of(1OkBrTkk^|NM{Tm-y$E+ zr-u0mQNrBeL$FxRPgkjoDe2Ferjc1^qz3HxnJ4vuk1d)^BPHFxO^u>|8qA4A2CyoA z==m}u(BQBtFy=;88Agd6Nu-jA6hHl$1PVzy!;8Go7V}v%i9tQHgZK5U9ZzShIu;hT zVZMJ&ZJ&u;Fk%fp=D~`S$8OSNFRN;z{?$Yx#;6g^+D3$zuKezu{t+<>JgQ=$7%o0R zd?riZM+;{KoKKHfg_=8mCzfXE%Ei8d&4!Zvm4o_i8?*2oF!JSrOWf->^jsKRx8NjG zPpi5vp2fZsfG6{j1Kc8y&o~KAAe2;gP>C6-6243%d<2351I>wYW^%54Sd~P|c4Z8t znTDbrMN~_^#p5BbLk-vak z!AwTqQPj&1Mu$%w%3AS?jUxMlBJn$Xo~d3bn^c^WNMcBXnKeTlK8?GQh!rujiCBlv z%>;=U*MnWi^?bg6soI+z!du9QhT*iW9VGCoANvlhQKiuF`FwPO&^gxWwgRES0jB>@&D=V9-%>Jzzi z+6;I@eq=*$HX1c7%QNMgcqcWa47;p1olV91GJ48l5B~grJCE<1dpMnB<=dKpaO1!r z3B7pD;Dy))PrU29``81nZ&R;=zbI7ps?ZXtm@&G+RN2K#jm7w50WTFUa$DJc)Ls{l zjyp1vh}m%$|7wxAkr;^EZb8a*+t#D;g45O@-Z*h&EvjZLqmM-TlPGWzR^C}0fyV5B`Lr$>maoN#LndHgRoEi1Bvh#6)g zm0%|b8I~MUhSHYO*1A+_U%E{7H#Pb3X=zve{+5914=ioPr){a~Z*F0qcCbs^TU39` zQhb(wH8F0TKP1mHaN{|~=g`K{j-dS* z*jGW{M0*SES7>jey@U2^G^}dBtSNV(-HCQU#t&pNe%qKOkzZRiRw?-}L2vQpW0mCh z4UXyLulywI&lzF59g^g~Qj+~WJ!3R>)zz|pQ_uA@wv%=d`8V&Qu{|XDZ^bWvDE^1o zM}{R+W}{7cXQd0^p3R$oL_5DqPt&ushn^tGH^G3fvCmIPa>FqD_e&c4DZNfVqc`a1 z^b2D1{f5TaAm(iSZ;5_K|3#eqUXVWs@<&1bTab4JIVOlB$a{kPNs#{$qe+u${zk(bWWK8A`UMt8>L3Rmpogljfxn7VP1lc3VUP1N= za-$%h7UU*DZWiPgL2eb~HbHKe?~)Ovy9IZTO!t%O@k+F)cBQnbq=cjeg3>vH%8LY5 z_K@h{?5vb}WQAP&@*Vd@LZEFFw5V4gJ$-`rUb<4ckzl*HbEPx{TC!z-rF1oDDGc}| zDpOWs_o&>pQc@+V@B}59W;F#Rg({Z>C6%g-pyZY(JN+4F*uMm23gsfgyZ2PF^9 z?FdRC`Ua#cADwek>&D>AIl4%LP3nBIudvpj1X@wFIR~ zstpFEDmr^jP^zW{=Le;K*|hLZ3Q9F}&UGMjs182|&PC+9NRk&Vo+l9%d6Zn!YKRr` zczfPcoQ_=w?=Z7=S=s3%4$h+R^-B( zshLGN(-ZQ_brnUBeLUw2d8p0_!m_L=9`Abu)2nk$$EZ?TeT=Gq=wj#mY2%9JI%h2` zhD*#6vs5p0E?`W#S#DP7vz!YVQ)yP3RXMYo&Eagwg&N_Zft4#Pre9zy-;SUr!vQm3HXo>*j|m6EOY7H!mSO=ZF)GGKrB^!{2CGLf zT0+ZU$Kos^(8^hxvm0_|8)vhe#oF6BJIvYMoY}$I5zcOZ%9-bKc9gT5bLMi+UcuO$ zxgclOhE`yvE8(%~l0Du&I6OvTug1u^mU3q2flB-$?d&ADeHnLq7p-=#XKa|WHxRSt z>;ZNW3}S@&arRjmTA|iCdkMB(D$eU?STt_o#&ziyI!67pAK$2ah@4v~H?EVjpK_s~ z#J1>8ny5E_^z)nppac3U=WbZ<@>O}@$vrfIK6Lj%)-7cBGg&uq4?-3avWJ)~1lb|( zV9q=T-c5v7DAsGvBXp!zsw#!G&k*)MdE_9^fJd3LZbBfM;Ok@gKs-jy<1}urK2TYL z0bhiV=Sw2jzl8o8Z2yr`UMqbki0M@snRcSUSiV};imNZFwJ){jq^PKI)`~8zs$O!^>F7E zhVx9~att?Kz)f)62H<|oa9(ysn_=%w?)FvEo7j}A=}mIp!luMGI=`gcMEoM>ZDQGa zem=*4-(f?GWei=2q3`mcJ4t#MV{w1JOU^MixYu#m;6CR)1}|X&S^)S59FF_-19JW< z9Ag{%H`X23FLwUH(4{igc{$KyGW@?*&Y4?=D_N9w%BTQaLZ83^+9l_F`W9z5lnBBs zD6ePT&?Q*h4NTYR?1kV`q1(s0Tz4bWUFzI_Bx9a36<+;@<>moQbc}8z>2BG%TMl1V zzn|7#Mid2J(vru0y)Q@uY{ZL;%rT#qBx=??CtJxXQr__(h;Zw|i zQ^xgv=W({&a*4cNH&*)s<0=%nxVVE==67Vsek~(I42=0JTS6eqEl-;uX=O~TAXyvzAs0kv%k z^|HLRdkVEJ-tD|nKy9Bw{XpItnnG=lhnyc4P!G@)>__reeF~P0>&|!qc3%NDA#c5W z3N{$O-1%_c2o$DkAWPyxMtF-r5;|9tvM- zUb=RO;+@W0a=6p%41Y45F*9pFNxJ3yQb=sm#u54zXEsTC)_I$E&1@LI4C=$qI|63n z-^j`ec8y{0-j&0n=4kzYP-q9$O4U`E^q9aw9J+$)Di%ZZ9z0_>j{Q1?uB2Kz7`lqE z)6Snb94nF;-1&>VbxZi_wO31j@h#5#a(IimCHyJ#Q~EW|2Z9+RbBy$BasCC5wS;yO z2L6rn3-n#&{9O*uW+VA!|Dhbdj+l)w9~!!jaBm%#!@G$=P?dHw!I-jIlCLL;Oz8%^ zb2dqpF3nr=1k3HiINh5UMcv5IZ;|V;Y!EWkZ4fflpb6wE9T`*%>Q@JUReW88u4D97 zk`Bwq@W3ZVo+X))J)|)51gVE*=j(FLpd{&g$a#`?WqmI>Pw}pz?<40MEbCd3-a`lL zU#5dOb1ypIXPteB9eV{lBj-Y`*!Sn;T=+&>dm~9GP0!;{U&^=d1=cgOE6epyvm*5( zW5Z(iX61KpC;U#*)b3S(V5@d1fcZiYu}1&b!yrCV9+v)VT{B0fAFq$qLEc$~Xk(Eu`N<&b?fJ`P`K9KB2so^jpb! zh}*dho|mzK2bpe*c^e;ii0f{j)IB0}xASq2D&yx%QniMc$A`?($McSUMPb+5*YLec zKCC!jgo)k*s64aqc&*EseYMgP!Kq2$h!@0@$^;Gy zySAQE#?4y^s;41;I$m82(K7(K&HYUHyn>eo$GrgDErg*jK_qbBmhSDe={!9~_l=O>^W;q>eIWxwWsyrGQe-T%3Age~)^^Cm>c z`HJ2Gd><3NJr#_1fWjhQb$-Kx!Q%5A{WLx-l;y+2$VT+z% zTg&=bM}A{}|B8+Mr*dTC(D)-(RCE4U>DT(z(z$T;I2(NgRccH{r(Z*XsyIiISP9T} zsm?C7UmZU*fl)=yZjLAd_Iln^SuxwkyDpZX*F0P+KcXKX=SD7bGugGog?Ev2lbY*y z^}9tCyIIBJ=eY2ex)N*Oud)O6G)enawkX=KI(Nc&#N9~pS_<96s@#D|UK*bW-Aj07 z-^C@N`v`U9Ui4kSFTn_bzb`L=g{cwu=VfBd1I&fFGX5q!FUOv~^HAu0rmrdd0GSU^ zQ}{tL9|U=b%!fb@l6eqBHC6uEBAv$n#qVc(HwTu=tMKE-^#6IX672s0P+chKP2Ur^ delta 5543 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 diff --git a/trunk/research/players/srs_player/src/srs_player.as b/trunk/research/players/srs_player/src/srs_player.as index a8fa5ec2c..e69f2c97e 100755 --- a/trunk/research/players/srs_player/src/srs_player.as +++ b/trunk/research/players/srs_player/src/srs_player.as @@ -152,8 +152,11 @@ package if (srs_server != null) { obj.server = srs_server; } - if (srs_primary_authors != null) { - obj.contributor = srs_primary_authors; + if (srs_primary != null) { + obj.contributor = srs_primary; + } + if (srs_authors != null) { + obj.contributor = srs_authors; } var code:int = flash.external.ExternalInterface.call(js_on_player_metadata, js_id, obj); @@ -267,7 +270,8 @@ package // srs infos private var srs_server:String = null; - private var srs_primary_authors:String = null; + private var srs_primary:String = null; + private var srs_authors:String = null; private var srs_id:String = null; private var srs_pid:String = null; private var srs_server_ip:String = null; @@ -277,8 +281,11 @@ package if (srs_server != null) { customItems.push(new ContextMenuItem("Server: " + srs_server)); } - if (srs_primary_authors != null) { - customItems.push(new ContextMenuItem("PrimaryAuthors: " + srs_primary_authors)); + if (srs_primary != null) { + customItems.push(new ContextMenuItem("PrimaryAuthors: " + srs_primary)); + } + if (srs_authors != null) { + customItems.push(new ContextMenuItem("Authors: " + srs_authors)); } if (srs_server_ip != null) { customItems.push(new ContextMenuItem("SrsIp: " + srs_server_ip)); @@ -318,8 +325,11 @@ package if (evt.info.data.hasOwnProperty("srs_server")) { srs_server = evt.info.data.srs_server; } - if (evt.info.data.hasOwnProperty("srs_primary_authors")) { - srs_primary_authors = evt.info.data.srs_primary_authors; + if (evt.info.data.hasOwnProperty("srs_primary")) { + srs_primary = evt.info.data.srs_primary; + } + if (evt.info.data.hasOwnProperty("srs_authors")) { + srs_authors = evt.info.data.srs_authors; } if (evt.info.data.hasOwnProperty("srs_id")) { srs_id = evt.info.data.srs_id; diff --git a/trunk/research/players/srs_publisher/release/srs_publisher.swf b/trunk/research/players/srs_publisher/release/srs_publisher.swf index 1da99869f9aa06705fc6a418e098bc4a0c5859b4..785b53ea5c4ecc0302da1d2f93e34a7e9c940467 100755 GIT binary patch literal 5642 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 literal 5585 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 diff --git a/trunk/research/players/srs_publisher/src/srs_publisher.as b/trunk/research/players/srs_publisher/src/srs_publisher.as index 03c7d3918..2669e708b 100755 --- a/trunk/research/players/srs_publisher/src/srs_publisher.as +++ b/trunk/research/players/srs_publisher/src/srs_publisher.as @@ -136,7 +136,8 @@ package // srs infos private var srs_server:String = null; - private var srs_primary_authors:String = null; + private var srs_primary:String = null; + private var srs_authors:String = null; private var srs_id:String = null; private var srs_pid:String = null; private var srs_server_ip:String = null; @@ -146,8 +147,11 @@ package if (srs_server != null) { customItems.push(new ContextMenuItem("Server: " + srs_server)); } - if (srs_primary_authors != null) { - customItems.push(new ContextMenuItem("PrimaryAuthors: " + srs_primary_authors)); + if (srs_primary != null) { + customItems.push(new ContextMenuItem("PrimaryAuthors: " + srs_primary)); + } + if (srs_authors != null) { + customItems.push(new ContextMenuItem("Authors: " + srs_authors)); } if (srs_server_ip != null) { customItems.push(new ContextMenuItem("SrsIp: " + srs_server_ip)); @@ -217,8 +221,11 @@ package if (evt.info.data.hasOwnProperty("srs_server")) { srs_server = evt.info.data.srs_server; } - if (evt.info.data.hasOwnProperty("srs_primary_authors")) { - srs_primary_authors = evt.info.data.srs_primary_authors; + if (evt.info.data.hasOwnProperty("srs_primary")) { + srs_primary = evt.info.data.srs_primary; + } + if (evt.info.data.hasOwnProperty("srs_authors")) { + srs_authors = evt.info.data.srs_authors; } if (evt.info.data.hasOwnProperty("srs_id")) { srs_id = evt.info.data.srs_id; diff --git a/trunk/src/app/srs_app_config.cpp b/trunk/src/app/srs_app_config.cpp index 0513cfada..58f0a3a86 100644 --- a/trunk/src/app/srs_app_config.cpp +++ b/trunk/src/app/srs_app_config.cpp @@ -1167,7 +1167,8 @@ void SrsConfig::print_help(char** argv) printf( RTMP_SIG_SRS_NAME" "RTMP_SIG_SRS_VERSION" "RTMP_SIG_SRS_COPYRIGHT"\n" "License: "RTMP_SIG_SRS_LICENSE"\n" - "Primary Authors: "RTMP_SIG_SRS_PRIMARY_AUTHROS"\n" + "Primary: "RTMP_SIG_SRS_PRIMARY"\n" + "Authors: "RTMP_SIG_SRS_AUTHROS"\n" "Build: "SRS_AUTO_BUILD_DATE" Configuration:"SRS_AUTO_USER_CONFIGURE"\n" "Features:"SRS_AUTO_CONFIGURE"\n""\n" "Usage: %s [-h?vV] [[-t] -c ]\n" diff --git a/trunk/src/app/srs_app_edge.cpp b/trunk/src/app/srs_app_edge.cpp index 426bbbe4e..78dd39cd8 100644 --- a/trunk/src/app/srs_app_edge.cpp +++ b/trunk/src/app/srs_app_edge.cpp @@ -227,7 +227,8 @@ int SrsEdgeIngester::connect_app(string ep_server, string ep_port) data->set("srs_site", SrsAmf0Any::str(RTMP_SIG_SRS_WEB)); data->set("srs_email", SrsAmf0Any::str(RTMP_SIG_SRS_EMAIL)); data->set("srs_copyright", SrsAmf0Any::str(RTMP_SIG_SRS_COPYRIGHT)); - data->set("srs_primary_authors", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY_AUTHROS)); + data->set("srs_primary", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY)); + data->set("srs_authors", SrsAmf0Any::str(RTMP_SIG_SRS_AUTHROS)); // for edge to directly get the id of client. data->set("srs_pid", SrsAmf0Any::number(getpid())); data->set("srs_id", SrsAmf0Any::number(_srs_context->get_id())); @@ -647,7 +648,8 @@ int SrsEdgeForwarder::connect_app(string ep_server, string ep_port) data->set("srs_site", SrsAmf0Any::str(RTMP_SIG_SRS_WEB)); data->set("srs_email", SrsAmf0Any::str(RTMP_SIG_SRS_EMAIL)); data->set("srs_copyright", SrsAmf0Any::str(RTMP_SIG_SRS_COPYRIGHT)); - data->set("srs_primary_authors", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY_AUTHROS)); + data->set("srs_primary", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY)); + data->set("srs_authors", SrsAmf0Any::str(RTMP_SIG_SRS_AUTHROS)); // for edge to directly get the id of client. data->set("srs_pid", SrsAmf0Any::number(getpid())); data->set("srs_id", SrsAmf0Any::number(_srs_context->get_id())); diff --git a/trunk/src/app/srs_app_forward.cpp b/trunk/src/app/srs_app_forward.cpp index 6afd57a64..1c1dbb2d5 100644 --- a/trunk/src/app/srs_app_forward.cpp +++ b/trunk/src/app/srs_app_forward.cpp @@ -344,7 +344,8 @@ int SrsForwarder::connect_app(string ep_server, string ep_port) data->set("srs_site", SrsAmf0Any::str(RTMP_SIG_SRS_WEB)); data->set("srs_email", SrsAmf0Any::str(RTMP_SIG_SRS_EMAIL)); data->set("srs_copyright", SrsAmf0Any::str(RTMP_SIG_SRS_COPYRIGHT)); - data->set("srs_primary_authors", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY_AUTHROS)); + data->set("srs_primary", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY)); + data->set("srs_authors", SrsAmf0Any::str(RTMP_SIG_SRS_AUTHROS)); // for edge to directly get the id of client. data->set("srs_pid", SrsAmf0Any::number(getpid())); data->set("srs_id", SrsAmf0Any::number(_srs_context->get_id())); diff --git a/trunk/src/app/srs_app_http_api.cpp b/trunk/src/app/srs_app_http_api.cpp index bbbcfab53..cd0ea5d17 100644 --- a/trunk/src/app/srs_app_http_api.cpp +++ b/trunk/src/app/srs_app_http_api.cpp @@ -490,7 +490,8 @@ int SrsApiAuthors::do_process_request(SrsStSocket* skt, SrsHttpMessage* req) ss << __SRS_JOBJECT_START << __SRS_JFIELD_ERROR(ERROR_SUCCESS) << __SRS_JFIELD_CONT << __SRS_JFIELD_ORG("data", __SRS_JOBJECT_START) - << __SRS_JFIELD_STR("primary_authors", RTMP_SIG_SRS_PRIMARY_AUTHROS) << __SRS_JFIELD_CONT + << __SRS_JFIELD_STR("primary", RTMP_SIG_SRS_PRIMARY) << __SRS_JFIELD_CONT + << __SRS_JFIELD_STR("authors", RTMP_SIG_SRS_AUTHROS) << __SRS_JFIELD_CONT << __SRS_JFIELD_STR("contributors_link", RTMP_SIG_SRS_CONTRIBUTORS_URL) << __SRS_JFIELD_CONT << __SRS_JFIELD_STR("contributors", SRS_AUTO_CONSTRIBUTORS) << __SRS_JOBJECT_END diff --git a/trunk/src/app/srs_app_source.cpp b/trunk/src/app/srs_app_source.cpp index 4f578f075..e5405ae1b 100644 --- a/trunk/src/app/srs_app_source.cpp +++ b/trunk/src/app/srs_app_source.cpp @@ -957,7 +957,8 @@ int SrsSource::on_meta_data(SrsMessage* msg, SrsOnMetaDataPacket* metadata) // add server info to metadata metadata->metadata->set("server", SrsAmf0Any::str(RTMP_SIG_SRS_KEY" "RTMP_SIG_SRS_VERSION" ("RTMP_SIG_SRS_URL_SHORT")")); - metadata->metadata->set("authors", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY_AUTHROS)); + metadata->metadata->set("srs_primary", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY)); + metadata->metadata->set("srs_authors", SrsAmf0Any::str(RTMP_SIG_SRS_AUTHROS)); // version, for example, 1.0.0 // add version to metadata, please donot remove it, for debug. diff --git a/trunk/src/core/srs_core.hpp b/trunk/src/core/srs_core.hpp index b8b947437..3e2db170d 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 31 +#define VERSION_REVISION 32 // server info. #define RTMP_SIG_SRS_KEY "SRS" #define RTMP_SIG_SRS_ROLE "origin/edge server" @@ -42,7 +42,8 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #define RTMP_SIG_SRS_EMAIL "winlin@vip.126.com" #define RTMP_SIG_SRS_LICENSE "The MIT License (MIT)" #define RTMP_SIG_SRS_COPYRIGHT "Copyright (c) 2013-2014 winlin" -#define RTMP_SIG_SRS_PRIMARY_AUTHROS "winlin,wenjie.zhao" +#define RTMP_SIG_SRS_PRIMARY "winlin" +#define RTMP_SIG_SRS_AUTHROS "wenjie.zhao" #define RTMP_SIG_SRS_CONTRIBUTORS_URL RTMP_SIG_SRS_URL"/blob/master/AUTHORS.txt" #define RTMP_SIG_SRS_HANDSHAKE RTMP_SIG_SRS_KEY"("RTMP_SIG_SRS_VERSION")" #define RTMP_SIG_SRS_RELEASE "https://github.com/winlinvip/simple-rtmp-server/tree/1.0release" diff --git a/trunk/src/libs/srs_librtmp.cpp b/trunk/src/libs/srs_librtmp.cpp index b6f415567..d1ad3513b 100644 --- a/trunk/src/libs/srs_librtmp.cpp +++ b/trunk/src/libs/srs_librtmp.cpp @@ -655,12 +655,14 @@ int srs_rtmp_connect_app(srs_rtmp_t rtmp) } int srs_rtmp_connect_app2(srs_rtmp_t rtmp, - char srs_server_ip[128],char srs_server[128], char srs_primary_authors[128], + char srs_server_ip[128],char srs_server[128], + char srs_primary[128], char srs_authors[128], char srs_version[32], int* srs_id, int* srs_pid ) { srs_server_ip[0] = 0; srs_server[0] = 0; - srs_primary_authors[0] = 0; + srs_primary[0] = 0; + srs_authors[0] = 0; srs_version[0] = 0; *srs_id = 0; *srs_pid = 0; @@ -675,16 +677,17 @@ int srs_rtmp_connect_app2(srs_rtmp_t rtmp, context->param ); - std::string sip, sserver, sauthors, sversion; + std::string sip, sserver, sprimary, sauthors, sversion; if ((ret = context->rtmp->connect_app2(context->app, tcUrl, NULL, true, - sip, sserver, sauthors, sversion, *srs_id, *srs_pid)) != ERROR_SUCCESS) { + sip, sserver, sprimary, sauthors, sversion, *srs_id, *srs_pid)) != ERROR_SUCCESS) { return ret; } snprintf(srs_server_ip, 128, "%s", sip.c_str()); snprintf(srs_server, 128, "%s", sserver.c_str()); - snprintf(srs_primary_authors, 128, "%s", sauthors.c_str()); + snprintf(srs_primary, 128, "%s", sprimary.c_str()); + snprintf(srs_authors, 128, "%s", sauthors.c_str()); snprintf(srs_version, 32, "%s", sversion.c_str()); return ret; diff --git a/trunk/src/libs/srs_librtmp.hpp b/trunk/src/libs/srs_librtmp.hpp index b941219dd..58d2c4c8a 100644 --- a/trunk/src/libs/srs_librtmp.hpp +++ b/trunk/src/libs/srs_librtmp.hpp @@ -176,7 +176,8 @@ extern int srs_rtmp_connect_app(srs_rtmp_t rtmp); * SRS debug info: * @param srs_server_ip, 128bytes, debug info, server ip client connected at. * @param srs_server, 128bytes, server info. -* @param srs_primary_authors, 128bytes, primary authors. +* @param srs_primary, 128bytes, primary authors. +* @param srs_authors, 128bytes, authors. * @param srs_version, 32bytes, server version. * @param srs_id, int, debug info, client id in server log. * @param srs_pid, int, debug info, server pid in log. @@ -184,7 +185,8 @@ extern int srs_rtmp_connect_app(srs_rtmp_t rtmp); * @return 0, success; otherswise, failed. */ extern int srs_rtmp_connect_app2(srs_rtmp_t rtmp, - char srs_server_ip[128], char srs_server[128], char srs_primary_authors[128], + char srs_server_ip[128], char srs_server[128], + char srs_primary[128], char srs_authors[128], char srs_version[32], int* srs_id, int* srs_pid ); diff --git a/trunk/src/main/srs_main_server.cpp b/trunk/src/main/srs_main_server.cpp index df489cffb..8af0c6b24 100644 --- a/trunk/src/main/srs_main_server.cpp +++ b/trunk/src/main/srs_main_server.cpp @@ -188,7 +188,8 @@ int main(int argc, char** argv) srs_trace("srs(simple-rtmp-server) "RTMP_SIG_SRS_VERSION); srs_trace("license: "RTMP_SIG_SRS_LICENSE); - srs_trace("authors: "RTMP_SIG_SRS_PRIMARY_AUTHROS); + srs_trace("primary: "RTMP_SIG_SRS_PRIMARY); + srs_trace("authors: "RTMP_SIG_SRS_AUTHROS); srs_trace("contributors: "SRS_AUTO_CONSTRIBUTORS); srs_trace("uname: "SRS_AUTO_UNAME); srs_trace("build: %s, %s", SRS_AUTO_BUILD_DATE, srs_is_little_endian()? "little-endian":"big-endian"); diff --git a/trunk/src/rtmp/srs_protocol_rtmp.cpp b/trunk/src/rtmp/srs_protocol_rtmp.cpp index a4ffd3077..39ccb2131 100644 --- a/trunk/src/rtmp/srs_protocol_rtmp.cpp +++ b/trunk/src/rtmp/srs_protocol_rtmp.cpp @@ -444,20 +444,22 @@ int SrsRtmpClient::connect_app(string app, string tc_url, { std::string srs_server_ip; std::string srs_server; - std::string srs_primary_authors; + std::string srs_primary; + std::string srs_authors; std::string srs_version; int srs_id = 0; int srs_pid = 0; return connect_app2(app, tc_url, req, debug_srs_upnode, - srs_server_ip, srs_server, srs_primary_authors, + srs_server_ip, srs_server, srs_primary, srs_authors, srs_version, srs_id, srs_pid); } int SrsRtmpClient::connect_app2( string app, string tc_url, SrsRequest* req, bool debug_srs_upnode, - string& srs_server_ip, string& srs_server, string& srs_primary_authors, - string& srs_version, int& srs_id, int& srs_pid + string& srs_server_ip, string& srs_server, string& srs_primary, + string& srs_authors, string& srs_version, int& srs_id, + int& srs_pid ){ int ret = ERROR_SUCCESS; @@ -522,8 +524,11 @@ int SrsRtmpClient::connect_app2( SrsAmf0EcmaArray* arr = data->to_ecma_array(); SrsAmf0Any* prop = NULL; - if ((prop = arr->ensure_property_string("srs_primary_authors")) != NULL) { - srs_primary_authors = prop->to_str(); + if ((prop = arr->ensure_property_string("srs_primary")) != NULL) { + srs_primary = prop->to_str(); + } + if ((prop = arr->ensure_property_string("srs_authors")) != NULL) { + srs_authors = prop->to_str(); } if ((prop = arr->ensure_property_string("srs_version")) != NULL) { srs_version = prop->to_str(); @@ -927,7 +932,8 @@ int SrsRtmpServer::response_connect_app(SrsRequest *req, const char* server_ip) data->set("srs_site", SrsAmf0Any::str(RTMP_SIG_SRS_WEB)); data->set("srs_email", SrsAmf0Any::str(RTMP_SIG_SRS_EMAIL)); data->set("srs_copyright", SrsAmf0Any::str(RTMP_SIG_SRS_COPYRIGHT)); - data->set("srs_primary_authors", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY_AUTHROS)); + data->set("srs_primary", SrsAmf0Any::str(RTMP_SIG_SRS_PRIMARY)); + data->set("srs_authors", SrsAmf0Any::str(RTMP_SIG_SRS_AUTHROS)); if (server_ip) { data->set("srs_server_ip", SrsAmf0Any::str(server_ip)); diff --git a/trunk/src/rtmp/srs_protocol_rtmp.hpp b/trunk/src/rtmp/srs_protocol_rtmp.hpp index 77df8c831..9846d7619 100644 --- a/trunk/src/rtmp/srs_protocol_rtmp.hpp +++ b/trunk/src/rtmp/srs_protocol_rtmp.hpp @@ -268,14 +268,16 @@ public: * SRS debug info: * @param srs_server_ip, debug info, server ip client connected at. * @param srs_server, server info. - * @param srs_primary_authors, primary authors. + * @param srs_primary, primary authors. + * @param srs_authors, authors. * @param srs_id, int, debug info, client id in server log. * @param srs_pid, int, debug info, server pid in log. */ virtual int connect_app2( std::string app, std::string tc_url, SrsRequest* req, bool debug_srs_upnode, - std::string& srs_server_ip, std::string& srs_server, std::string& srs_primary_authors, - std::string& srs_version, int& srs_id, int& srs_pid + std::string& srs_server_ip, std::string& srs_server, std::string& srs_primary, + std::string& srs_authors, std::string& srs_version, int& srs_id, + int& srs_pid ); /** * create a stream, then play/publish data over this stream.