From 9b4ebdd7ded29be9eef36870ec0a3f2b7774dd5b Mon Sep 17 00:00:00 2001 From: Boris Grozev <boris@jitsi.org> Date: Sat, 10 Nov 2012 12:01:27 +0000 Subject: [PATCH] Adds an Opus configuration form and changes the default Opus settings. Updates the Opus JNI binaries. Notifies encoders that implement PacketLossAwareEncoder (Opus and SILK) of packet loss information received via RTCP. --- lib/native/linux-64/libjnopus.so | Bin 260857 -> 262288 bytes lib/native/linux/libjnopus.so | Bin 256888 -> 248880 bytes lib/native/mac/libjnopus.jnilib | Bin 657008 -> 657576 bytes lib/native/windows-64/jnopus.dll | Bin 279598 -> 281095 bytes lib/native/windows/jnopus.dll | Bin 254390 -> 255395 bytes ...itsi_impl_neomedia_codec_audio_opus_Opus.c | 55 +++++-- ...itsi_impl_neomedia_codec_audio_opus_Opus.h | 46 +++++- .../jitsi/impl/neomedia/MediaStreamImpl.java | 136 +++++++++++++----- src/org/jitsi/impl/neomedia/MediaUtils.java | 3 +- .../neomedia/codec/audio/opus/JNIDecoder.java | 2 +- .../neomedia/codec/audio/opus/JNIEncoder.java | 131 +++++++++++++---- .../impl/neomedia/codec/audio/opus/Opus.java | 68 ++++++++- .../codec/audio/silk/JavaEncoder.java | 114 ++++++++++++--- .../neomedia/device/MediaDeviceSession.java | 2 +- .../service/neomedia/codec/Constants.java | 82 ++++++++++- .../control/PacketLossAwareEncoder.java | 24 ++++ 16 files changed, 566 insertions(+), 97 deletions(-) create mode 100644 src/org/jitsi/service/neomedia/control/PacketLossAwareEncoder.java diff --git a/lib/native/linux-64/libjnopus.so b/lib/native/linux-64/libjnopus.so index 5a73eaafb66e390c09a03b0e63c399b05e293982..045fa4c9380c3edd33a2f64ea52f38de125bca99 100755 GIT binary patch delta 23189 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 delta 22534 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 T_9{`W*w99Ku<uZ#ypH}q`HY{{ diff --git a/lib/native/linux/libjnopus.so b/lib/native/linux/libjnopus.so index c55810f143401615df5c95484546ef779b469fd7..6fa870980561270879197d815d78ca7928b8b7d9 100755 GIT binary patch delta 20881 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 OcfTP4Bpt;l>HiNC6TRaA delta 26889 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 EKeTfmmH+?% diff --git a/lib/native/mac/libjnopus.jnilib b/lib/native/mac/libjnopus.jnilib index 7b58804f5b41e2c9dfb88a3ce0fa9d1be6a6ab7c..72550c2d067d739a2f1019366379b6bcff8d9049 100755 GIT binary patch delta 15643 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 D$5C4( delta 14708 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 diff --git a/lib/native/windows-64/jnopus.dll b/lib/native/windows-64/jnopus.dll index 02ddb34c378d3712b74771d49786b056e48e8bc5..903c582080ae1bb972f2cbe427514944f2cdf8e0 100755 GIT binary patch delta 22080 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 delta 21873 zcmb`Pd0dU@|Nrmnx;xrCM=EOzm9j)p_9%*jkiBe0LL*7C8-+p=ac~)Hm|<q@qTB9R zhO#eX#xi3XGh;HgFqW~M-|IT(K6P$B-~WF1!|l4R=k>bY*LA(G?LPN8%wJx0=Yp#F z3u>(n>KiRw5QTq5K`0mM*R!Y8RTzQ9sHK})(8u?d-fl))TkD+29J|2bz#2giM(9?P zMr4%k4Dlmh=$?>{POYth%aLt^ut?XQ`jKP0QTY3eZZZBY))nFJbA@+l0C6P4L_wQ# zN}F?{%&mj2hSh%BWvK456>}{bf{Z*@_K^pU3lNlT9-^C}iuUP>oQFl)Tu1HCfSp1i z$kxL~dRMS^oHY&AJyrQq%@Cbim9NwR?M0z$PFc=vZO(sX`8{>Vs&ub)9i`^JBjM`h zrzfo|`zst4SE@aQvbH^S-qs!3z3m|iIcFY>G8hb?ky(GLvw9;AD?!(|m2=3iNF04{ zk)!XSTW=k1-2)cOZbs<tTL;r-Ho7`C&FC?EU9?RL`l_{VroEqTmyHemCQ#>K@1y$_ z(J6ttHukM_p0+kL#6)`_YHgxRY;DL7x*7KVIs;<Mjj{1|HYC9qD?qFnkJ%Qf1^Dtr z88N1I%c(26?e?3=c3rf?G8!9!rueIhAv&+C>e!O@)#`TGr`SYj=YDxpNDtNN9cy@; zjqvfuzzMniwK@HKyt?K*3(vW!%{j+STSx19JIv6fI>pl8JL`t4=jeK<ok^}PUd>1~ z{M|zrsfi&wbn7)?g{7Jlk<OV=811sx)^_!1QHaWOoH)AB-s4*<O@jnc2tR~M&c0A< zT&pMOPSxvAkBrdO^4?3!hZkP*?q}_KXb?0x=OWa*vJb$;T)26Vu4SVxbikm(%tnJr z=<FC6RYzXY=BWmlqQwuqo*4|0LHfBf;;A}|+QB1vDtBb|NYLlJRqy(_bFPCPs7g#> zjesCx#|DZ5EQja@>iRYrL7NZMNlhlx!vhMNHdWcv1KkT-w7F<YcXTXNMKn{<#L&Xl zUA+m7X;(O`o41vwWh+royXe(}^v~6?s(@C7OM9lN=zl?ls(zE~G=2Qhfdl4FhWYCj z4r@ydeuZa;ow28v?FyHCp|z#HF1lM24?8!m#^-rJT?7LMX!An6s_C|*Kch*`g<nl7 zr1XGV*K_J<I#8{XrcQTw=p+h3chGG2znls~r;Q`DqoZ#7bPqbhQFmc_T}?|z%xB~` zJn@1z%dzmo^o^q3N?T)BLkHRFzMU299f;)F?EJe110U?1lP@CR;9h_y-g@%5s;zCI zVU~9l>LluXvRBg1wD3swd?NlQh=rZ!@1V5mN8QVup>*em!hQ>%Q##;np*F8nWgqyG z3dZu)Uh10bZqm?yb&kthQmcOpJ1-9<J&!)8!rY_j9}R{Y>LvTD3*7sz#egr=G3QLT zrtcVa6W4UG$u=+4Lma<H3}9;o_{u2P_)d7PySk#I{eRC)H97`9FZ5V>%!>LyF1)+? zg-Fkr>8`IIPY0FhA~sB+C4cLVZn#d<|1MlsU}Z(W_@i*u*DI_WwEYFvnLbNDNmTn^ zfx}z_K#tXhQ(mZtx%wc1X1VUZqZ_dOEPZ-g=eeUMZFfi4W`|duDtD;xAhgUlIUNt) zMxweYq59>vZt{*x9U^W~AzZ!dB*sD?o)?ZuJggWURs}<=ZsO>RAVS@x7*P*Ixx$ph zz-d&~ZWqqoIgrqKH+8@4nob-2To|+aHEGx2Cn)z2c*Gkq_52C%uuC;@t!2biJ%6|< z?PN@g>iNBqjtnY+WZMm0?%rB-*A3m)y*Fr`8@gGALtQ5PNHGumF(7;%px#i=A9YU) z|MFaL9oD0=r()yFG5(#~DQxZ=I;$o$j@7OgzSy_Kp4K|6%hLCwr_U7L*59|L5yuNp z7GJTV#|{-PzeosudO*i6dC=<z3MB+i8zi`>0SsbiFDNSf<H~3&&9Xh15O1xgXkOpK zx;(u>H|T~tow%oP+KtTGG$E_-U3u*)^vn@mjn`f2x+8@Nuj>)pfrlwpi|dz%b&KEl z(^0c@2j0x1k@>o?|9X2&Jp}jU%odylAv|~Xo2m$Mmi~eO1;!lG?fNgGnmr`gBf93y zPK64!#(b%(^0p<tc~IBkZ6oTxM3?-w4z*fRxbW?0745#T@P#3t(BcIwn~?A6xI-+6 zl5RBoAp4S%o;2tnyGY4o`rrWPE-Y3gwP~3#QG+cONp~W$KuT)zxSjMtB%M^W&TOfp zExAN#^eoBQfz+b3)lAmJi8P|tGo`^!B*3PIOB(l!O}gvcw+`AocV8sYgZ62xz>Or+ z@(GetbyBk`bsf$c_><PPJ%%Gc=T`VZe(09fDZ-pMHh@IssT_v0Fa1gN+K=Kb1^?{l zf`MFcJD%<GC#`5oJbT~|(^ccyzy`#hepta~Hy~d0SsdHkfCSJBE7-LLWHa@RV^bPJ zH-8xWt0D5)a%SC#w5R=tu`Z2BFtr)RzHCII==J&Rd?PZs?iw8i#MmsfuPk)0!H_%u zJ;ozjKdV(#UO>C<Y(!(y!RO=<OWCh`(7vM1?hg)PVxlLWXy|uC*bj|K8+vpeBLVPn z!92+$fVhyl3sHl*$T15+gt{p7ON3E*i+nUy1fC8_(Mf%qklw_pm<w{#ecEaBLLV(- zdz+GlH8o(p@{%9RP0V?YMn>g@<}79X1IZk^bt$_QNPKDL(v?AED?K!jeHTRPQZ`V! z5JVyg9XwE~)||Ld+P}ZlAOtg>cI?X<w<O*)ps&=sB{?IyP3px*ZrYphLsl3X<Gvj* zp_dfUmb4LR>nJIyJ*h_2njWT2%w-NnxmpjF+ky0;zeKUy9Y`I`xhOt%Q9dzzWA)t^ zB~=L{L4;1~F0~FPIzr34vP&Haqusl*(Va*+9j9fn5f}n*E!!GF8q#-N*!2jqogR&p zW=E1Wgl0xc9$m;QLj5~RZe58pv0v5ERKIFNN2z%?a*NpQ3*$SVCgez%<Q7GalSZRM zsnC^N4l2ohg|<ZF?x)WFiSQK^vZlSMxYax)*0*2TlZ4ZW?OCUuWFU2J&(`)NWwcc& zo7anUp?|bvmwS;!&7yV~@#83O+;tYWlOm#tE3q5h)>QBKwo*cG5>9Af8@8nniKJIs zvd4W$siV3z6|!H=>KB#g`)3R3c3*Oi(5Wq@E&WMVLK9oCg9FGe8qq@fVju~kcCNuj zbFNi`rEg-%U(~Hnkg2I5brFe5D1VMEuYM3K7((i6ssM3EYq_HXY6P*LhLFy*Adq<s zCEMuJrqcPLWFvLX3NYGq&oqUuGXtbq@tFFwTO(=T2=a{3(f-obktC7Q{Q8p9XflJ) ziM}j%40%FxeWV#l<f=%Ic(I=2NITlli!B;Qj?<-{QjZkkVoTS!N(ocQJwgw=urAZc zT`E<R{HBu;gf?=Pa%Yf<lu}L6ERslQFDGeq25GLM&1|K$StQi9c_#teMi~iurCs$R zT;1@4dY8*=<8j;u84=_koJ2T{hP}Z-htnuF)Kj3$VKMO%tq^Itm_*PLgEVO|IYg-A zM;4S%CeZIcu&?t;Gdk!4yO~ceSIv1(@bLCsT*6Im*nRzb>A+I*BdK=!Ey1Byte#ix zgXu)ny=5D8WF>v~A8Was{7!@aW3^V0=Jby@tk()MgU)%wF03F~b`Ecd@LV0Ea(KfA ztwjFu*KEm3qNS5wvs)`kKJELOjb)?*b$iXWGc5cMuUH8q|IxQE+38iJ7d`lrxqd}v z)eL<}Fc<q<p<fX`fd}N7<=*fm+x`{lZ+G}#!e^T6<$sy|YVw%=_(FQS8v6&``<!Xk zl0DS$jGbCb4$-)0QpP&+k<boLS;huzZD*gb;~Pjld&3i0K%Yb3K9L@6;6*Pymgq*J zC3M*%DQXirNa&QSlJ(cb&4zZcmOQtUy(*eZr0aV~8L_L2A;9YH0#E-?NLtfjr&jJG z4{6Xz_IMxhr1O4cPWwrC>s=ptH(ZbNKplBfn=?1YRuCSH#!fg&?HR$>n`6x%k(rYl z%`?731`e?g*V%&oWD)Iiow*fZxPon2w<35e;5r*!g#G=44ck~mZq@d>hT%KFj|pwg zv$B5!42IV?A8tj3*4NkyiG<OeSJ}@J38DG#n9~6=oQ|_*6As{L5{|R=2S{SOuc~0( zRu~xD*kD*Nw-`^_55{8LdH=3hR?r>!51!%y9yv{~unq@dsn1)Md=LYD`ZC*i5bI`& zE&KT($@Iy#<_@x=+MEcVR_etJBN&x8(<d6ogo6#=)P1YiNHY$RR)p@nDD6K?s7SNV zv4h7*>n4lO5dkYVm>)8;>Km(@1H{inV_RX;t1Qu!G2$HaI!>z7=yR;~aqQLl5;p8O znMP-oNVkrYFdLfiP^w)_oNU^E`H<iYIj)+5FnsO<f_O-Ri3JQr*efr}mIC_rK_a(7 z?li012{x$80c9c|N~5okh-!4gEosLeq%EaCZf5`dMN;Xe&1}eh(xpb%&AfsAe4=w* zJ0pr%j5gObVKX~?pRA)JH?cu~L)~l>yYM%Oqf0lkfHG2t7H*Wfmyvi<^~QA~MCIJW zbmz~DAt$f1BM(S4oqC-){X?!hZ^c0K`7Vd5HP_gSf3S>3Tw}oxF+rMLV`CnY`qb$f z%YR5}&^K4v_YcW1dipA}dqk2#!>^+6xqCEtM#5GSi!Gy}9(Ab#z<Jof7*?HwPgjE4 zAD`rgsA|bsZdcjvN5qXHEPg~n8~uhU@j_j7xz7dDZXa?DK%F%avj*#_;g;pRjtF(E z@3AW^@G)k{iYsjBW75;UD=*0RV(k@H^q6GY{dCz_dFZvvEbIwsK(}3HW1o=v4gENe zRL8vHfBlPYt0sZu&Ktrlt7GSmL?b~R6E3sEPcY;yF0;}n#FaL>%w9hsf%L;A*5E0g za<*JzF;B@@_X(Fw6}yg<BLN9=#CO;wR{E4Ypm7(a^W|g|q3_O1&7YILgw{VNEqFmX zQM*aSd`Hu$CKR(9FYzqZtC$&HV#U`eW^G=fmi}j1(koKmtHD{`o0v1)od=Ea*emL+ zVrp!wyL6WAdPV%`va{^wD>A6o-ZNa?aPb8^J)x8yrOxw#Uw?*0y(aF?y^Q&>xqLv7 z@7UoCoAH|H=%yc-<_(!ivwmQU-;jqje>-ioGmk$Un?973!c4%0(`?y)B&Pmko(-Qn z9zDf%v1?7E7NH(;{(%kl8fZi7pJtl3#M7>U(Ns)G$Z6L4ElHy{PO%+t$vyh`BwPB9 z919IOX>tS))h;FKK_z8};)pN`pPEOh2i?R;<X#V1Fsbq|hOzVTdWW}O<$O|F^q#aM z-YzGM0!Ix(Ew+O|%(P<eU3+6jtm8X9d-ws~U7%<6KVqSb*R%N_$$a|Hai%elNV{!# z$UqIQ+m5q10||(_pJVKo<5VM$QH?>UK5i8~N<AK%4eI90$q_pO@4eZZU=8uvEe5A& ztYc?Wo@2-3?52VERy7>s+L*ax_)=)1x^QfT6KxuuVWdM;V~t^~YBWOiz!Ro724z75 zjIMD^0?nPrpNMe=p2)_lgki<-PYL{kI%8G6jioh?J&x_qqrE7NIKu8yS}U;e5!8uc z@@*tX0z44m+sRap-TjeLXU#CpCDp6L%wME8Xotg+L8L=fw0u7sW=m($^!@CvEgeK_ z>}PH4=r?rIKK8pEWwf-AO}D3|loqlf4m6&w-OG+S&;c}RFLQIGtLXYYY_}s#p`G_I zFDH7P&Y#X+I?>xSXBWGwhQ8%4)?7nVX~|CM8x6hcOt&PmsovC|&PtRvdDAYmM)LwR zcU8ql19cHLetf9gz_2H|IjE4^BjFXu;q}bBKJ|0BwgLKt#~@|v*ns-f*I^@wQR7&B z9h(nL+Z3*mZNebIQF&)AcF8<MaWEX0J{lsk|IAJH@t@TYXJ!YZfj?og|2p=7n{+Z) z;+VCT)$*hDTmG{CGm~8{Oa>TD8jR-lK-wdLpLC<wu_-9*kiiQZ$%?h?J3s2<(91~B z3&$VUuv^fyb^pAAg=;F?oKnQw{5W@}Pb*_3PuB5DxErk2vNrx`^HC6EC63M4u(AHM zzH2TgN;kY&Ep73qp~Ss48s9ZRkHcR+7(axoi~6asv{bX!tZYad(LJkKKttMu{{9sk z+K@J*j$g5*4XJ0%WVEVl!s&{$UtQ#a5mVh*#Y&J}I~dv8gtHad6=vIh#l%K5gpORr z+BBk`{ZFk{3S~QuR{@igWmbni8XBC<=~N?UMx7u-_G9(pyLhm`GeEAf+z%BM<UFmY zBJeA=vk{t}u!`MjL|f4u##|et$z@;hsw#`fRrO}9M`P+<Yp*d|(PS4Zbm<UdS&h;2 z`zzT2=xTN`=_-6Co7ugRJ!wow&_}CSp8)!iK4MazCUlvKe!EP%-<)0$>AA&hUrQQ9 z*<$JMmULAW>bO9f-JV8@^h_2j4yWH!yDXO85sIJZN?SY95w=t}U9yj&+Z^bb6m}qn z`qHf_(r+=egB=|)Qu0cmW9?~gTb7qXN7H$=*sBzpK|j=#ri`aL=U$s4i7@wf&l7J| z+JtM^((={2PGF{O0~W28YUiG|IfWP6uWtqEXa9E`M{&lZoMKF*v2w9DD(x!uahEyj zT~|>mBvOi<gPp)h=)`w7e)wzL-*jXjvuLdbr5%mCBR_vs#fV2{m#7!7f=T|A6r>M7 z@qi-B_h3gUJe&3=c3*^Zy(T0roUNTlZ_;nWq{;KC6&}7jNHZ7EpR8%UR#LxwijQ#B zTe8th=_tCS1-rbIwxAg;B<p4LB%zywrSm%4o>ZUP99w6EdQkb?cUJ1GZ|wPFV(747 z=CuMtAKaV`T0z6zOPXQm`3F_wCixJloOIJC=+Jx3*nt%^i~2WX?N`!M^l&ptWV8>l z?G=PFc_D#8(y&$ZG_n1nDPM=aGn%qSt7#w&Zz2s{O@|TspfNkThSs1`0Q-3j9n-+K zF;>Q5^d47cd*081Ad%U6_2L^qQ3-g)!%K&i0n(VYG{K5K^Or6b(7VL#KR+Vig?oHG zs3O#OcZtat>c>uOqSbBpArHgg?#F)LMBQrbKvI1ySo5ImYdqa1EcdZ#ZhU$5r5~%h znYvZIQJ?oW%O?}2U?s(mwc1Q4(^o#y?#;9#bvjhfIAWzZr+oL;E80Sr5a-ak#!+#Z zs~-3>PSlXlx@_ZCTD@jt@KF)!CMVVNKf+v8UbF$(zK^}w)vZ)=4)!t@3vGvx7mM&> ztG}gnX#+3m=(ltyrL*0oaogxrLTlHN{@zZz5qiFs)O;t+$Lg<vvN)eq(TH@-Yd2e) zkmZBD-Z(qLYDo8X(=Q3#;l_sVrLncXa6_kZ(J2VzhXzc;Sk)jm_Tye!Ow(Q2`a(LC z)^ueb3h6dF(uIA$kA}7C;{s<jQT0MF#ZEo2BuI}>rjt7?m|cSBLG>|Adeyie;irTW ztP-vH$=1h3s<)r^7U_4+Y|;UGkd{}K0uRzKO1G<}w8QilO0PJu=wp~=%N^LlV>mwD z93;Er*jDXTwnUgU2Cu0u*hzi#bb=NA%1Zj-G;M4}XX~XG#Wcs8zFI5IdPG~+pno4> zl9i~X?uQvsi4o3I((q>JRb;jyD%VGYw#`pt16AS`x_^Sypo+NIk>1$P4ptNMyj$!S zgkyNf5Y*WdjPFrZBSFH7?2TVmq2!AFQj&|<hS<LQ2BPEc&%cqjyNX}ZW`BLn)1fyJ zXmb|%gy92V6lO~_!U&{e5NdM?KHeNK3f&98W`k>pLuu64(xDn+50M_-$!zP0&FIpd zEVPaoN;~dkGwX<f)PJY6vyQk>r2D>?+IWdJgs%RMMbs6G=<{#c`?}&R+VNXyW<BvF z_PnoISbeb-&H7rJUSI58hfY|-E_M_>oub#^rDb=FF}}i!TEpIU6k9d4<IELIes`!M z97K8X_TR)-7C0DR8{RUw9^1!;bP|(;Ck6`wO}9I%8qFhc(cHH*-Ffa?lHLJof8*<b z!NX4F<7Mi!6EKn&l6Hc<?<6j!d*`!75oqt?y(}V9>`L42WlJK({&ea*c0W?AOCy&s z+s<OQp0+u>m^(#qR#moG5YRX@=A^d4Z7p75&)Sc_?PpEN4JciJ*PD+gIpl`k<}pKh zpHcbR)~8VA8KfuX;hUZ>ce0J0#c;<tT<~g=3+&EVz@By%>p6D^f?7S--Z;V`?{+Zn zF7VofY-wm0u`QwR=d#sW(Y;?{QwVeU*PrR`hAY}!RX+~$qHVOfVK&+v*GQhs)=&B) zSG8;rf8m<$2mfXus?9D*uYFcE6;XZ}T-|m8o>j#yV)k7{5881NYt&U7laVwRI5%X= z4rqQde$A>nlPd`6b#Q2;^1PfA2G@M#YI9WUknteJ*ks30<e3Ys0H1Uj8(FXg%;fM8 zpeKi}lVIYkYCNFHrK)&DAFgK3-9(qF?GewumaZ}$UuRW~a#_o6VpCeB2^-T*Y-sgQ zfFS7VID3R>^P+qL4X!J;V`k@$<k1m`=KLUsXLBAKTr)wq&MW6kj=|u%bUS;{O$@Ld z02}B+TmbXzF1GWjyHF7NYUe&mHMrK}1#;c3(FS~FfVWF!#z|LgJIm-UhGZ1;DZyVY z7+h~{<4V;|lnpA;=7a<wa#l4L)5O+F(4SR(SutT$a}b4eMq^$$Qjch+DOzlBUCqtF zF8~JD9Y`2lt?~CEZp7&B9Hhz?;F~jTZe&#qvnmu7Y4aj^^jeM-5hWHAn!kiO^%Ps% z{56X=qWcootEX7I>fS}X!m@*b7;{WG@5O9JPw`6|A7F#)oNrh566ev$xzd7OBF?y< z7O}Euv2DGB#@xTLoxl%2atqma(%WitLuYQ`DCFfgEV8%Q%;}j?F~r9ot&d&AvU_9Y zxGiGe_7(>Q{F;k_XsOMKvoW};j5^hGASh4qASd)sW6(uoaBcq$Yurb4Z!i%Ab5{+g z&pqum7|$)4e5#_zG~^guxAKiFSG7EsrS%bgY&sj^g|FHAK4QHZb&RP^kUacRn;Wfx z<FFo@<g%N6#HRiB!(nsZkV${RSc!3zHsEi58C?I`j4~JG%5qf;k%4vNc2+eLF+Mqs z`v~7qPGL>wIpzRkgs@rm72ms@DtK?`F=)~)ZG!77M6n+i7O=7X#1!vvV@|r-IEhC! zQF~??D~w7|B^rgU^$OVge&WzNCpK^sSYL+_Nw+cT@yw=8aQtfno77*d>opG<n4Dgt zW`|BQiqmb38zP*9dcWQv74;YWNw-mxvEk1zLp8tl^J&FDFAo7h80FJyl)A|Y_55V? z=hi<rOK!ctb%Nh_0@~CCIeD|>?!8;5Z~k$&<Stl?y3Bu|m_|2EVrvJAF;qK=y&5R? zqtDY>R1CJI1L<sDjJT90rn8!{VkC7+XYsLO9a=h(&59LU(p?jo6f1ht^%L36Seyp! zC$gA9Vq<DEk<A-~^W@JohOhb?(=BPNY>;?_+N7~9gJFN~1onO~POiZd*o-0K0(vWz zsfLO@=ohK1-%#<JTGz*;XG46Vafg-tq(UOXCk%euHl9@*CWh10@oc~_@neluDcG0# z^RJOSg<B<NUu;TY$#G(eGez$7D(b8Y_=v%M<eb7D#i8{V#xc8iu^at%oHQU_Tu7)@ zGP^fi^rH{QO7<f}Ka$aYg&^eT8+?x~H-%^9u!_uE$f3t4;ZL&8T<(dSUMYw3<gn)_ z=^{DZ-V|o|zLG(T9A5e)ZElb`^pNu>%VCku)bO9=@QfTf$zhXE!k%)vzA?-&_`X_Z zGGGqfJ}J;bPXAw_+29u0j=4g!y;(B%knOCL)5myN3$7m^1Cs%)3A{d4B~D`{BgOXA zcN()z6x-3GNvumE_M+`c?2AOPdq!>&HjV@rEM6;WD8)8dGzLpPOYIqk&BeVd5)aaG zipl91o*r45PU7i)mFW_mj;Ks8<>_Fg^Klt`FD*5>$ivi9a27mDd{i_>ET_%|Jqt$~ zcLDh?{|OQuE8Zm;VVB+;o?ra`bH~G$Uba^*hnmap4UxG2k2<P-mQn4Jlr~OWAKoxt z|It8Cd^G4!n!@~3rZD@oDdc(lu6IIevrGJ^N}Z1@42DH34TiP2x8pv7`vUF^+)~{O z;%So6g8%9am(?@TxWl?3&ToJGhAb2JP25du2to<YJV%7iwFTij#Fs(j<st}Q;0|yV zgrf)r-0yKO!hH#BI5dH{4TvY>UWdD9O+ok*_w-uWAfJhSg|4W05$-Fv-Jgp>0`7IV zOL6<W5QXu$58(cYyDNShw+#1P+}<xmAszP#+*MxTmpiyO;(qdqeLNsGvHK!reCni$ zO-3dsv#K6eDbmh^*v?q$5iy)Kt!<@}qK=BE2(zhW6=q7mIW8U~MJL5T8wc~$NW~N} zxvA)am~KTp*`zDt^$h&(M7V@4j|g7IM_obi6VXWpNe2nUSKyVJA3%mHh@BPOs2~v_ z-{A**m8BMflqkr>3?N4vOHox+-BdxkgY>ku)T{vcQ$g;5Ot-Vt1fVg__GZ##R8n#x z2DJh1kNADcXu=&Dm&gjPiJFY*&_+9$wU7w;AiEW06Ns1EQnL?4gC8zdcCZ*E46k1+ z$!(C*U`uizBtFEFymkZ1Y;Q*9rnY90*G10^2RO_t%ACpDRu3doL4rZ_JuEd^kb<6; zB$k)L>Zoj63P`?!EC3ODTWY?~0P-4OiH?9oE68P#-7%J$-$6<h<T1#VSWAs92Dw~8 zyg>p7nKdRqV4{Vw#2-aZ>kh~*7$mTz4@CEj{z&L6q}(f`LGlNi3v)6R#A}F|nB5A; z$ul4!F*&_S0#{mIStwPWV=l#WR)d5YpV`byWM>ADu-j5}21H+INp6A!?zbdQKr$7C zViK30x75@E*?q~9GzRgyVoBQAV(*ErK<1uBv%@z;&nkVOkH5l7Z;18$(0jSFX^E-B z6UHW{CrwXGtL$_fw1L-TpH4?2?3!goOSvfp`5q)wK~96@E68oGxo&CaE!QYWZLHPQ zpDZ;k-GK5dkhxQ1*qxuS3VI;3{AWvjEJ*ZCOOgPxTR|p(c-^wp%mztSkUWr51^J3= zZd;c6CJsn*#}XX}(JRPBuKC5RF}FXtVg!=Mk8YNnlv3$@<lq?@r3!vEjux5B-u;Ze z-Ur%!*KCN3o`ZP(W=Y<Iq$-FV_By?S)Bw?xT9)z$iC2(dUP?j2+<*dqHy1PaV<y{m z6N@m4XWlbSm<A(|h`wi5qMgD-kkkrdE<20Wz9o8-IjqAi%+CyH^pA}_u0IcDOxrOp zy%aghYb%K6iOD;8>@td59|p>NYHC5-tK8Nz%NG0wlK;|@yaWk+V<zS{En_`y!<wA~ z=KNcewNMWv%JG)cv_+bgE77FNHU>bWygGsu2!#E9L##{Iu&3PYAh3K&jC)n}2}p#A z<P)<SSl2sH&PQfoRk`$Lwv@9~oH?5q%fBPqx$_!#fGV$(oOqjR3B8Sk-uu&9wnJfR zd}2z%_>qZmNhu?f5)vnxXW=W9DuoGS<9D+ezi^*8Vz&9q)ldHg)sGvQ@IQ7+cj)p1 z<W4r>3B2=G`tAsG{}mR)cxH&vVof&WSJ9?rX$!NI@4|6ONofTw&4hQd8%jjCG86Mq zoMCHVE+ZD1sqM{~Ts{tDcZ4O$0EzExNmhV_X)Vb%5PdgGa-0*qJv8-#uh{T$sX}xQ zGZ{WEwON!KaB5F8GPmst>vb1x`xzF>`<OF%+x`O4^tB}KK%)Cu5_>1Kw!bBD2Pwe! zx|PRuBM|){GZ`~{cv=vw#}73VURV1JhyrJsk-2TyRpnVQd4hT5x!ip9<kc@Um*O-A zB!96b83|Il#F9(_$;>wsQ(ZW&@38T|iJon<k-J-G&gC{&f|ReYB%3)|WhUm<{>DmR zz`78b1?%Oh`3I|73U(e$*dVjNSuAHa!J^IVA=}8=L$J&pvhFE+z}agsy_vmWLBE69 z;(<=HQ`Ws^(>QYn)9*Ghzjvt5w0=e=8rM(iq~wW}%SQ-;c=tY&m>L9TcTe=NjsT38 zWD8b!HBz~K3_zCh8ViztP+moIxw%81I>d%;yN8BtKxXM7lUertJ*>+C;Sv91IQK!P zKPp>1iA2G%Pc5ohk3U3jO;ttPepIu}KSUQzH3cm*QNQX6YJgegRa1kRS7K@%exgkN z6utdC6lGdKp}cy7l%A6}u<=M}E`HileAQ&(z7?OD*bCxyQT8>yx3Uml`%L@<ME|QS zZm1AD;;~(M)dLAEmBmdI;x?a&qd~&{kj40d(4rYhpNX?TcHfu9*a$7en?4gC0EvD{ z*v8jlJ!Su{ey05kB=wESFl%yOv}2j~MK^2yi;yet<O$*BjBbAT)XkCX>V2He&5;>R zSpEaiqd^4X<&;|NKm$1u&BVN1d$7>IQ8W>mURK7U8Iustw=xU4TeEpl1z8J{sj}4U z;l$2N%;tM5{BsT(<#i84Z!edE78iSbLv;1Sc530+51$pRS`9<yK}|>BKsK}tk0`Nh zHV=lfZ_2RX{GrJ7G$}N33UjTi8P^JXR0b#4dLX)0=?ihRm$CoVM<K5F{<J4aZ0rL# zY8o=j{fxpYxjgRA20ajKu}k=il(Qw!R9^?a8$UNzo~9F-=RYv86`83WOf?-uJUZ-C z;S@IQAJJP343~R1gPlOZ2InCT!>_X|&y-udo=7t>yF8QGK1BEbMrM9jqluas6O)q1 z#&zo1rM&B>>g)=~L`QY{AKTF@m?<A-E@iX>VPKq@@DWqtB}+N}-GQ>d_;Hna1nWRl z3nJy!1SE5`+{rwqdW2R-a@7|yTgrNHHUO+(hRjy56=15dU{~0LN7$zDlMHh`C_9ZC zP+UtvqVc}P_>i=Y`96lp?O>%c^V_H}aO5)sKZ58pOa^?vQHY;@CRX9Y-EOw@G3McS z>;tdM1H@~#T>lOh`2_F416-NM6R|$o!}5?+wSlCR)qR5A>{r<Di45g61|)E<$(r9m zg*f{&@dgn60=ep=Eb%Fta|CSndfC7Ug@Fs78F&Day1^v&{XrqNbyGG>5IjKi?CMkW zqC_EW@tL$Ih-Q;)7pI2B0FL`ioDEXWhL^*oSJ}mK^q~M`_t&Q4>_WL{$0wMu_p_44 zAkkY*Ywd5u1Hb!plHO+HpTVGj*N9%*WT)I!w8t4)%F7R=V3#burx17eOdJamxZ5Nq z_gR<csBJP>>K>W>!<KM1hnGAovnT9l&K861J}$H8%<~1<MzH9UGJC~FzrapWeqT<% zWxKd$FEsfE6Qdsqd-DR1HD>_}@K2EVGVsH}VBzxH$WmTUK}xAfOscT?|H3MN<?1EM z2C&gv7;s0H@(KbeFpHfO;;7HWBe>XBWLNKr^;q0X)HMUd%U-VEjcw&@5m=^^Tz@Tv z$@QO^+zS$~mJQTlEni{sc(K8+V5fv<X=FP-6?P_$PfL&M92KqH1MfndT2&VNSBQCM zNlj&!1;G`h+*uYkR)`yaCJqBBaFtsah#%;pX#>GB-A#;5e~o9vgz;%<J%*>JB~7(# z+ZgDsK*wLEh0a7G%!9u&=P$U-rvUzKjKu)uL!-QQ@~XV#>O)!L8&rRpn>Dj=wu7^K zV0s@}*NMG+14njYHUGn|^#)n->?(*~cSUXXc%iPmd_XkyWh=edcPMTh1{UTgv%c&Z zXT8Dnjb%0vKP3hm4t6C-W`o&m&L)8s1e+Mke2Y{3+FLv-%>j-Mk^Qof+iLNtUq&ig zdKDVwb)TDPDc6QG{~eC(k6;C%EdQNYuUa(z6}i&WW7!Yy;FNLf0S_iH$M-m_?Q5e* zg_KuO3q;f5)54Qkf5@%tBh#ycso~XIAQAYPavIwOW%bU;EDihAOa}Xln~6teekYTe z25CqL5oTpv+_>RMDIk$%VxB2ktoH|$&EmC2%1v0q6P-U*E@a!dawpI1BG*!kgkEb_ z@{ZmGDer0~=2{l9>L1~rrL65o(X-o2XfmVB8eYm7Tew#bOVSKPUqQ@v@Xz!t=5^;f z#s@jFiXDV?F|4O?;A)1CN=-|gn3ygAd@@=aE6S%r@%f99L8vtvX86*I8;3-Gg$drw znIPo~vJ_-@FLO0q^EF6dv?bXGl3GE`UD?c@Q7doq4ZCH4XYjOuK#cA!&%GThBCR~F zucBnU8SPn-XXP!Xnv?ri+(5FRuUz0Db0<ja`^jmX_dG2OkkcpF4r6+toc@8mB&gvx z)SwwEvl13c!JhJ3&Fmt}Ml;2HbNaHW*;h@$byIM|6x?A$MU*$7d_kN%LtOFxt2EB+ z4ot)JF^OquLcE!n-I2sfL@V!%F~iIm;}XY>8$UTw2&*8YlE;rvgNL;hg!{WODp*iK zP%0sHnjo~QB*T-F$K#s<O$A9FnK(5SC5tP_@DbSlK~`l{pai+tw-p4lDk&v>lwgDZ z^TM<T3{M}P(hS9-D>M_6MyCu<M)xa8dRj^X-a{RzAb2ws6o^tW6$Fju(^Uu@mSHxH ze4!<JR-;11Nk{%Nv7&lT`hs{>Xhuy*OG?LAWtkNu4$e*)kEK*WCZ?w)Ct@quT|u~= zp|F!WOzb50EN)T?oHkaNS|OS&cR#;^j7m%7-^vO86@;gf+}U=ORlSTkF!;EMAmF7E z&Lw^ofP^8$w}vv=12P%OO3i7m>1Ij(04ar_Qu7kT0ZDxECfgw%@EyLRswD0iK>XrW zo2qXN;$`%mnY0D@7nzmCx`2c!O2vcBRA{DvXpIxvY)1#uUeS&3J$wYAj-rhcMEv4k zKA9SH#)Fktfv2t^CsSeYH;@8FpWlFlwYBtuy(erbN_m4|<yrW*4M-*`<Mo;9>;n?1 zXli^0(1Hj{(=$O%Ltp8a#UNBs{T2{@@&7NtWcnCLe3+%38(f38HkFzuoOHI-sJyfo z7KLedFNp9oQ(3GfhzhKd^ab$;!Jy04Cwj3M8>`@q*~l57=-~#Co5ne6)@}!BtI(VR zK}#*{-2idz&6lIO)Ndeq#f*Lpg8vx8!cjIEbw6!b4Uj(-B43bHMfI&f!cbA=<md$A z)!fok!#D}IB;!C%wXq~~>JAfxtQMANHAJOw9_o`lRR|IvVX3(Y;-YBceUQv{mYO#p znmATwYvqyQP!C_wD&}4dka$INn{uMign<OMx3oC`gnxHlxwgk~jiUY8ApELqzb*qv zxk(g(v{F=dkrz|Uy}v-}P|Lx31ENt(J&m^@1S^(pZ4g0W+21=u5V|OauPsES3PU|X zQWZWP1M;6@_T+$MwzTa1CXjSR6OV%wDEx8LTgVVf71Q}|h`K2nM10_(AWPFVLA(@h z^asJ(vzYR2KvE+uOGSg=KOL}`;A25L>lHI&9?(KX8`pzGE65QL{5yXOLzjJ+)&aZU zZ^+?S<=XxiWPzd?YF`YL!c+br!3ukwK~fb1H5epbu{^#2!NG^$ahcb`v<#p?MX_9v zGDT%uc`?OYIto&X>hZ^T3&IUff-QYl4pI<dNv!Jg>Md8fQ+>>(WYN+uwIRBvm?tej zq7_Z-1+rFAYB0zgg~!uC_`jj7f(m&v1t9}Oxop<e$6U$`wQS>Ih(;=km4Fl|2K+a! zsc?SZ<ix~On7^W!lm9_eYGrBJ*$)E*%auO!1j%TpsH`#2Fh#LQ5RKy4?h8_?=xZ`a zfx`LOApEL=+tm9FAgvXakAak{6|KJP$NqJ)s#oO>vb^G09W^$)GQ@opjr<qHMPb|l zXA$4yEBnU(^Q_7PB`(hRG&%f=@l$}gNx{&JQ4FjWBn(fKs7`M7uneGoiDgfw$)?d6 zS(F75h@WXxk~JXwvc_%d{|=CHh3S(ZUW!szKpY^i^x8lEn4rrQh%~@6w}QBV2(2tz z9R#B9U`e!G)6|j-0Z|U@SddwYA)3_y6O{jgt+GYA5V<G_1JNrM>~0W2u^(Rn@liDT zZ;;Xm%Lcsz8KThCY={XuQ&CxcATLGFLP7c|G~GZ76s}GH;p0%b@k|EER5URMBtlXB zcic_}5dO%ccp7N5!bLxWtWr#(XCPh*jbkIz+^DR+9>^j^qk}+%a7%ym0?BVNz!HrG zDh;tD^Fay}l@)+IQcT#LAiVvR-8j~WEp*1_|0{B`fGdaB0P<cz92*P58^tQE1EPGA zZwR7CckoAcR40%yg<JZ8jIC&CT-?;8IM%3|Rn?5q$XKMPaw5orio%d4#0`gKT$Sr- z0W?1<N^Jn)i@ws!2SBunQs+Q;BP%sGGl1g3U`uZMOOUk+)7Am_xLDC32!)y;jZv!7 zbABKrEBePZZ9v{DMj{Gidxd3mEIBTLwQ;f1WDG}6rsCL{1i~9{gPXSv2Mmb6t>ree zm=i_2wt(!bsDYO{2=YilN<i>pRX}59%cU7W7ZjprAkm6vLpwAtQ*oYqf|R2a{>X+} zg7j24p&v*A?#ik01yWfG*G+ALU9MDNIuD{N3bF}=UzJ05=reL2q?N)$zk@_6D&rrD zYgG6wZhT7O)THzbAzm@X`Bo_?9^l+Sct0zvZw7)Fd=^unJujuu3;?lGXhwqY!>iKy zGeI&k6$h#gsGnjuwt$o=nz$DvOtI~r2gyWb_#+R;pIoCDpw}RJg<sWy*k&>+9Kzf0 z3zV#=J`_ax>=FmUJ5gELbdYETSr1~Ruu}x0T#;u$zO@dsbYm$u1iL6{yzv`85Pd~I z;^GohM#jY<*K|>#N|2OQ-Rd;{>m>Z3o8brCotUPMl@lvHDn_x)+E#bir9)yc!!N&W QS?(b*R66Ev)wS{e19>rtDF6Tf diff --git a/lib/native/windows/jnopus.dll b/lib/native/windows/jnopus.dll index 961fb5be44ddfe082a3dd9b8558ce7c69c2f8864..4e4e6d8f5816d5c622ab0d9e5adff39f6ce275b9 100755 GIT binary patch delta 14103 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 delta 13690 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 diff --git a/src/native/opus/org_jitsi_impl_neomedia_codec_audio_opus_Opus.c b/src/native/opus/org_jitsi_impl_neomedia_codec_audio_opus_Opus.c index 55058e78..0a07a0f0 100644 --- a/src/native/opus/org_jitsi_impl_neomedia_codec_audio_opus_Opus.c +++ b/src/native/opus/org_jitsi_impl_neomedia_codec_audio_opus_Opus.c @@ -66,12 +66,30 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encode return (jint) opus_encoder_ctl((OpusEncoder *)(intptr_t)encoder, OPUS_SET_VBR(use_vbr)); } +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1get_1vbr + (JNIEnv *env, jclass clazz, jlong encoder) +{ + int x, ret; + ret = opus_encoder_ctl((OpusEncoder *)(intptr_t)encoder, OPUS_GET_VBR(&x)); + if(ret<0) return ret; + return x; +} + JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1vbr_1constraint (JNIEnv *env, jclass clazz, jlong encoder, jint use_cvbr) { return (jint) opus_encoder_ctl((OpusEncoder *)(intptr_t)encoder, OPUS_SET_VBR_CONSTRAINT(use_cvbr)); } +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1get_1vbr_1constraint + (JNIEnv *env, jclass clazz, jlong encoder) +{ + int x, ret; + ret = opus_encoder_ctl((OpusEncoder *)(intptr_t)encoder, OPUS_GET_VBR_CONSTRAINT(&x)); + if(ret<0) return ret; + return x; +} + JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1complexity (JNIEnv *env, jclass clazz, jlong encoder, jint complexity) { @@ -96,6 +114,27 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encode return (jint) opus_encoder_ctl((OpusEncoder *)(intptr_t)encoder, OPUS_SET_DTX(use_dtx)); } +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1get_1dtx + (JNIEnv *env, jclass clazz, jlong encoder) +{ + int x, ret; + ret = opus_encoder_ctl((OpusEncoder *)(intptr_t)encoder, OPUS_GET_DTX(&x)); + if(ret<0) return ret; + return x; +} + +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1packet_1loss_1perc + (JNIEnv *env, jclass clazz, jlong encoder, jint percentage) +{ + return (jint) opus_encoder_ctl((OpusEncoder *)(intptr_t)encoder, OPUS_SET_PACKET_LOSS_PERC(percentage)); +} + +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1max_1bandwidth + (JNIEnv *env, jclass clazz, jlong encoder, jint max_bandwidth) +{ + return (jint) opus_encoder_ctl((OpusEncoder *)(intptr_t)encoder, OPUS_SET_MAX_BANDWIDTH(max_bandwidth)); +} + JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encode (JNIEnv *env, jclass clazz, jlong encoder, jbyteArray input, jint inputOffset, jint frameSize, jbyteArray output, jint outputSize) { @@ -148,7 +187,7 @@ JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_decode } JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_decode - (JNIEnv *env, jclass clazz, jlong decoder, jbyteArray input, jint inputOffset, jint inputSize, jbyteArray output, jint outputSize) + (JNIEnv *env, jclass clazz, jlong decoder, jbyteArray input, jint inputOffset, jint inputSize, jbyteArray output, jint outputSize, jint decodeFEC) { jbyte *inputPtr = (*env)->GetByteArrayElements(env, input, NULL); jbyte *outputPtr = (*env)->GetByteArrayElements(env, output, NULL); @@ -158,10 +197,10 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_decode { ret = opus_decode((OpusDecoder *)(intptr_t)decoder, (unsigned char *) ((char *)inputPtr + inputOffset), - (int) inputSize, + (int) inputSize, (opus_int16 *)outputPtr, - (int) outputSize, - 0); + (int) outputSize, + (int) decodeFEC); } else ret = 0; @@ -181,7 +220,7 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_packet jint bandwidth = 0; if(packetPtr){ bandwidth = (jint) opus_packet_get_bandwidth((unsigned char *)packetPtr+offset); - (*env)->ReleaseByteArrayElements(env, packet, packetPtr, JNI_ABORT); + (*env)->ReleaseByteArrayElements(env, packet, packetPtr, JNI_ABORT); } return bandwidth; } @@ -193,7 +232,7 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_packet jint channels = 0; if(packetPtr){ channels = (jint) opus_packet_get_nb_channels((unsigned char *)packetPtr+offset); - (*env)->ReleaseByteArrayElements(env, packet, packetPtr, JNI_ABORT); + (*env)->ReleaseByteArrayElements(env, packet, packetPtr, JNI_ABORT); } return channels; } @@ -205,7 +244,7 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_packet jint frames = 0; if(packetPtr){ frames = (jint) opus_packet_get_nb_frames((unsigned char *)packetPtr+offset, len); - (*env)->ReleaseByteArrayElements(env, packet, packetPtr, JNI_ABORT); + (*env)->ReleaseByteArrayElements(env, packet, packetPtr, JNI_ABORT); } return frames; } @@ -220,6 +259,6 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_decode samples = opus_decoder_get_nb_samples((OpusDecoder*)(intptr_t)decoder, (unsigned char *)packetPtr+offset, len); } if(packetPtr) - (*env)->ReleaseByteArrayElements(env, packet, packetPtr, JNI_ABORT); + (*env)->ReleaseByteArrayElements(env, packet, packetPtr, JNI_ABORT); return samples; } diff --git a/src/native/opus/org_jitsi_impl_neomedia_codec_audio_opus_Opus.h b/src/native/opus/org_jitsi_impl_neomedia_codec_audio_opus_Opus.h index 57f05396..d9b71c8a 100644 --- a/src/native/opus/org_jitsi_impl_neomedia_codec_audio_opus_Opus.h +++ b/src/native/opus/org_jitsi_impl_neomedia_codec_audio_opus_Opus.h @@ -19,6 +19,8 @@ extern "C" { #define org_jitsi_impl_neomedia_codec_audio_opus_Opus_BANDWIDTH_FULLBAND 1105L #undef org_jitsi_impl_neomedia_codec_audio_opus_Opus_OPUS_OK #define org_jitsi_impl_neomedia_codec_audio_opus_Opus_OPUS_OK 0L +#undef org_jitsi_impl_neomedia_codec_audio_opus_Opus_OPUS_AUTO +#define org_jitsi_impl_neomedia_codec_audio_opus_Opus_OPUS_AUTO -1000L #undef org_jitsi_impl_neomedia_codec_audio_opus_Opus_INVALID_PACKET #define org_jitsi_impl_neomedia_codec_audio_opus_Opus_INVALID_PACKET -4L #undef org_jitsi_impl_neomedia_codec_audio_opus_Opus_MAX_PACKET @@ -87,6 +89,14 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encode JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1vbr (JNIEnv *, jclass, jlong, jint); +/* + * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus + * Method: encoder_get_vbr + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1get_1vbr + (JNIEnv *, jclass, jlong); + /* * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus * Method: encoder_set_vbr_constraint @@ -95,6 +105,14 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encode JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1vbr_1constraint (JNIEnv *, jclass, jlong, jint); +/* + * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus + * Method: encoder_get_vbr_constraint + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1get_1vbr_1constraint + (JNIEnv *, jclass, jlong); + /* * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus * Method: encoder_set_complexity @@ -127,6 +145,30 @@ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encode JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1dtx (JNIEnv *, jclass, jlong, jint); +/* + * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus + * Method: encoder_get_dtx + * Signature: (J)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1get_1dtx + (JNIEnv *, jclass, jlong); + +/* + * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus + * Method: encoder_set_packet_loss_perc + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1packet_1loss_1perc + (JNIEnv *, jclass, jlong, jint); + +/* + * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus + * Method: encoder_set_max_bandwidth + * Signature: (JI)I + */ +JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_encoder_1set_1max_1bandwidth + (JNIEnv *, jclass, jlong, jint); + /* * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus * Method: encode @@ -162,10 +204,10 @@ JNIEXPORT void JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_decode /* * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus * Method: decode - * Signature: (J[BII[BI)I + * Signature: (J[BII[BII)I */ JNIEXPORT jint JNICALL Java_org_jitsi_impl_neomedia_codec_audio_opus_Opus_decode - (JNIEnv *, jclass, jlong, jbyteArray, jint, jint, jbyteArray, jint); + (JNIEnv *, jclass, jlong, jbyteArray, jint, jint, jbyteArray, jint, jint); /* * Class: org_jitsi_impl_neomedia_codec_audio_opus_Opus diff --git a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java index 662adf1f..a521d112 100644 --- a/src/org/jitsi/impl/neomedia/MediaStreamImpl.java +++ b/src/org/jitsi/impl/neomedia/MediaStreamImpl.java @@ -202,6 +202,11 @@ else if (MediaDeviceSession.SSRC_LIST.equals(propertyName)) */ private long numberOfReceivedSenderReports = 0; + /** + * Number of received receiver reports. Used for logging and debugging only. + */ + private long numberOfReceivedReceiverReports = 0; + /** * The minimum inter arrival jitter value the other party has reported. */ @@ -229,6 +234,12 @@ else if (MediaDeviceSession.SSRC_LIST.equals(propertyName)) */ private PayloadTypeTransformEngine ptTransformEngine; + /** + * The <tt>PacketLossAwareEncoder</tt> in the encoding codec chain, which + * is to be notified of packet loss information received via RTCP. + */ + PacketLossAwareEncoder packetLossAwareEncoder = null; + /** * Initializes a new <tt>MediaStreamImpl</tt> instance which will use the * specified <tt>MediaDevice</tt> for both capture and playback of media. @@ -2495,15 +2506,22 @@ public void update(SessionEvent event) */ public void update(RemoteEvent remoteEvent) { - if(!logger.isInfoEnabled()) - return; - - if(remoteEvent instanceof SenderReportEvent) + if(remoteEvent instanceof SenderReportEvent || + remoteEvent instanceof ReceiverReportEvent) { - numberOfReceivedSenderReports++; - - SenderReport report = - ((SenderReportEvent)remoteEvent).getReport(); + Report report; + boolean senderReport = false; + if(remoteEvent instanceof SenderReportEvent) + { + numberOfReceivedSenderReports++; + report = ((SenderReportEvent)remoteEvent).getReport(); + senderReport = true; + } + else + { + numberOfReceivedReceiverReports++; + report = ((ReceiverReportEvent)remoteEvent).getReport(); + } Feedback feedback = null; long remoteJitter = -1; @@ -2522,36 +2540,55 @@ public void update(RemoteEvent remoteEvent) maxRemoteInterArrivalJitter = remoteJitter; } - // As sender reports are received on every 5 seconds - // print every 4th packet, on every 20 seconds - if(numberOfReceivedSenderReports%4 != 1) - return; + //Notify the encoder of the percentage of packets lost by the + //other side. See RFC3550 Section 6.4.1 for the interpretation of + //'fraction lost' + PacketLossAwareEncoder plae = getPacketLossAwareEncoder(); + if(plae != null) + plae.setExpectedPacketLoss( + (int) ((feedback.getFractionLost() * 100) / 256)); - StringBuilder buff - = new StringBuilder(StatisticsEngine.RTP_STAT_PREFIX); - MediaType mediaType = getMediaType(); - String mediaTypeStr - = (mediaType == null) ? "" : mediaType.toString(); - - buff.append("Received a report for ") - .append(mediaTypeStr) - .append(" stream SSRC:") - .append(getLocalSourceID()) - .append(" [packet count:") - .append(report.getSenderPacketCount()) - .append(", bytes:").append(report.getSenderByteCount()); + if(logger.isInfoEnabled()) + { + // As reports are received on every 5 seconds + // print every 4th packet, on every 20 seconds + if((numberOfReceivedSenderReports + + numberOfReceivedReceiverReports)%4 != 1) + return; + + StringBuilder buff + = new StringBuilder(StatisticsEngine.RTP_STAT_PREFIX); + MediaType mediaType = getMediaType(); + String mediaTypeStr + = (mediaType == null) ? "" : mediaType.toString(); + + buff.append("Received a ") + .append(senderReport ? "sender" : "receiver") + .append(" report for ") + .append(mediaTypeStr) + .append(" stream SSRC:") + .append(getLocalSourceID()) + .append(" ["); + if(senderReport) + { + buff.append("packet count:") + .append(((SenderReport) report).getSenderPacketCount()) + .append(", bytes:") + .append(((SenderReport) report).getSenderByteCount()); + } if(feedback != null) { buff.append(", interarrival jitter:") - .append(remoteJitter) - .append(", lost packets:").append(feedback.getNumLost()) - .append(", time since previous report:") - .append((int) (feedback.getDLSR() / 65.536)) - .append("ms"); + .append(remoteJitter) + .append(", lost packets:").append(feedback.getNumLost()) + .append(", time since previous report:") + .append((int) (feedback.getDLSR() / 65.536)) + .append("ms"); } - buff.append(" ]"); - logger.info(buff); + buff.append(" ]"); + logger.info(buff); + } } } @@ -2860,7 +2897,7 @@ public FECDecoderControl getFecDecoderControl(ReceiveStream receiveStream) /** * Adds an additional RTP payload mapping that will overriding one that - * we've set with {@link addDynamicRTPPayloadType(byte, MediaFormat)}. + * we've set with {@link #addDynamicRTPPayloadType(byte, MediaFormat)}. * This is necessary so that we can support the RFC3264 case where the * answerer has the right to declare what payload type mappings it wants to * receive RTP packets with even if they are different from those in the @@ -2880,4 +2917,37 @@ public void addDynamicRTPPayloadTypeOverride(byte originalPt, ptTransformEngine.addPTMappingOverride(originalPt, overloadPt); } } + + /** + * Gets this <tt>MediaDevice</tt>'s <tt>PacketLossAwareEncoder</tt> if any, + * <tt>null</tt> otherwise. To find such an instance, the codec chain + * contained in the <tt>DeviceSession</tt>'s processor is searched. + * + * @return this <tt>MediaDevice</tt>'s <tt>PacketLossAwareEncoder</tt> if + * any, <tt>null</tt> otherwise. + */ + public PacketLossAwareEncoder getPacketLossAwareEncoder() + { + if(packetLossAwareEncoder != null) + return packetLossAwareEncoder; + + MediaDeviceSession mediaDeviceSession = getDeviceSession(); + if(mediaDeviceSession == null) + return null; + Processor processor = mediaDeviceSession.getProcessor(); + if(processor == null) + return null; + + for(TrackControl tc : processor.getTrackControls()) + { + Object obj + = tc.getControl(PacketLossAwareEncoder.class.getName()); + if(obj instanceof PacketLossAwareEncoder) + { + packetLossAwareEncoder = (PacketLossAwareEncoder)obj; + return packetLossAwareEncoder; + } + } + return packetLossAwareEncoder; + } } diff --git a/src/org/jitsi/impl/neomedia/MediaUtils.java b/src/org/jitsi/impl/neomedia/MediaUtils.java index 3b539b9b..fa5038da 100644 --- a/src/org/jitsi/impl/neomedia/MediaUtils.java +++ b/src/org/jitsi/impl/neomedia/MediaUtils.java @@ -169,8 +169,7 @@ public class MediaUtils ConfigurationService cfg = LibJitsi.getConfigurationService(); boolean advertiseFEC - = cfg.getBoolean("net.java.sip.communicator.impl.neomedia" + - ".codec.audio.silk.ADVERTISE_FEC", false); + = cfg.getBoolean(Constants.PROP_SILK_ADVERSISE_FEC, false); Map<String,String> silkFormatParams = new HashMap<String, String>(); if(advertiseFEC) silkFormatParams.put("useinbandfec", "1"); diff --git a/src/org/jitsi/impl/neomedia/codec/audio/opus/JNIDecoder.java b/src/org/jitsi/impl/neomedia/codec/audio/opus/JNIDecoder.java index 1af80796..40d1a50b 100644 --- a/src/org/jitsi/impl/neomedia/codec/audio/opus/JNIDecoder.java +++ b/src/org/jitsi/impl/neomedia/codec/audio/opus/JNIDecoder.java @@ -141,7 +141,7 @@ protected int doProcess(Buffer inputBuffer, Buffer outputBuffer) byte[] output = validateByteArraySize(outputBuffer, outputLength); int samplesCount = Opus.decode(decoder, input, inputOffset, inputLength, - output, outputLength); + output, outputLength, 0); if (samplesCount > 0) { diff --git a/src/org/jitsi/impl/neomedia/codec/audio/opus/JNIEncoder.java b/src/org/jitsi/impl/neomedia/codec/audio/opus/JNIEncoder.java index 9006edd4..013c9988 100644 --- a/src/org/jitsi/impl/neomedia/codec/audio/opus/JNIEncoder.java +++ b/src/org/jitsi/impl/neomedia/codec/audio/opus/JNIEncoder.java @@ -10,7 +10,13 @@ import javax.media.format.*; import net.sf.fmj.media.*; import org.jitsi.impl.neomedia.codec.*; +import org.jitsi.service.configuration.*; +import org.jitsi.service.libjitsi.*; import org.jitsi.service.neomedia.codec.*; +import org.jitsi.service.neomedia.control.*; +import org.jitsi.util.*; + +import java.awt.*; /** * Implements an opus encoder. @@ -19,6 +25,7 @@ */ public class JNIEncoder extends AbstractCodecExt + implements PacketLossAwareEncoder { /** * The list of <tt>Format</tt>s of audio data supported as input by @@ -44,6 +51,13 @@ public class JNIEncoder private static final Format[] SUPPORTED_OUTPUT_FORMATS = new Format[] { new AudioFormat(Constants.OPUS_RTP) }; + /** + * The <tt>Logger</tt> used by this <tt>JNIEncoder</tt> instance + * for logging output. + */ + private final Logger logger + = Logger.getLogger(JNIEncoder.class); + /** * Set the supported input formats. */ @@ -111,6 +125,11 @@ public class JNIEncoder */ private double frameSize = 20; + /** + * The minimum expected packet loss percentage to set to the encoder. + */ + private int minPacketLoss = 0; + /** * Returns the number of bytes that we need to read from the input buffer * in order ot fill a frame of <tt>frameSize</tt>. Depends on the input @@ -123,14 +142,14 @@ public class JNIEncoder private int inputFrameSize() { int fs = - (int) ( + (int) ( 2 /* sizeof(short) */ * channels * ((AudioFormat)getInputFormat()).getSampleRate() /* samples in 1s */ * frameSize /* milliseconds */ ) / 1000; - return fs; + return fs; } /** @@ -143,6 +162,8 @@ public JNIEncoder() SUPPORTED_OUTPUT_FORMATS); inputFormats = SUPPORTED_INPUT_FORMATS; + + addControl(this); } /** @@ -170,25 +191,61 @@ protected void doClose() protected void doOpen() throws ResourceUnavailableException { - - //TODO: make a ParametrizedAudioFormat (or something) class, and use it here - //to set the encoder parameters - AudioFormat inputFormat = (AudioFormat) getInputFormat(); - int sampleRate = (int)inputFormat.getSampleRate(); - channels = inputFormat.getChannels(); - - encoder = Opus.encoder_create(sampleRate, channels); - if (encoder == 0) - throw new ResourceUnavailableException("opus_encoder_create()"); - - //set default encoder settings - Opus.encoder_set_bitrate(encoder, 60000); - Opus.encoder_set_bandwidth(encoder, Opus.BANDWIDTH_FULLBAND); - Opus.encoder_set_vbr(encoder, 1); - Opus.encoder_set_complexity(encoder, 10); - Opus.encoder_set_inband_fec(encoder, 0); - Opus.encoder_set_dtx(encoder, 1); - Opus.encoder_set_force_channels(encoder, 1); + AudioFormat inputFormat = (AudioFormat) getInputFormat(); + int sampleRate = (int)inputFormat.getSampleRate(); + channels = inputFormat.getChannels(); + + encoder = Opus.encoder_create(sampleRate, channels); + if (encoder == 0) + throw new ResourceUnavailableException("opus_encoder_create()"); + + //Set encoder options according to user configuration and SDP parameters + ConfigurationService cfg = LibJitsi.getConfigurationService(); + + //configuration is in kilobits per second + int bitrate = 1000 * + cfg.getInt(Constants.PROP_OPUS_BITRATE, 32); + //TODO:update bitrate from SDP (maxaveragebitrate) + //Note: If the parameter "maxaveragebitrate" is below the range specified + //in Section 3.1.1 the session MUST be rejected. + if(bitrate < 500 && bitrate != Opus.OPUS_AUTO) + bitrate = 500; + if(bitrate > 512000 && bitrate != Opus.OPUS_AUTO) + bitrate = 512000; + + String bandwidthStr + = cfg.getString(Constants.PROP_OPUS_BANDWIDTH, "auto"); + int bandwidth = Opus.OPUS_AUTO; + if("fb".equals(bandwidthStr)) + bandwidth = Opus.BANDWIDTH_FULLBAND; + else if("swb".equals(bandwidthStr)) + bandwidth = Opus.BANDWIDTH_SUPERWIDEBAND; + else if("wb".equals(bandwidthStr)) + bandwidth = Opus.BANDWIDTH_WIDEBAND; + else if("mb".equals(bandwidthStr)) + bandwidth = Opus.BANDWIDTH_MEDIUMBAND; + else if("nb".equals(bandwidthStr)) + bandwidth = Opus.BANDWIDTH_NARROWBAND; + + int complexity = cfg.getInt(Constants.PROP_OPUS_COMPLEXITY, 10); + + boolean useFEC = cfg.getBoolean(Constants.PROP_OPUS_FEC, true); + //TODO:check SDP for useinbandfec + + minPacketLoss = cfg.getInt( + Constants.PROP_OPUS_MIN_EXPECTED_PACKET_LOSS, 1); + boolean useDTX = cfg.getBoolean(Constants.PROP_OPUS_DTX, true); + //TODO:check SDP parameters for usedtx + + //TODO:check SDP for maxcodedaudiobandwidth + //TODO: check {min,max,}ptime and adjust the frame size + + Opus.encoder_set_bitrate(encoder, bitrate); + Opus.encoder_set_bandwidth(encoder, bandwidth); + Opus.encoder_set_complexity(encoder, complexity); + Opus.encoder_set_inband_fec(encoder, useFEC ? 1 : 0); + Opus.encoder_set_packet_loss_perc(encoder, minPacketLoss); + Opus.encoder_set_dtx(encoder, useDTX ? 1 : 0); } /** @@ -211,14 +268,13 @@ protected int doProcess(Buffer inputBuffer, Buffer outputBuffer) if (null == setInputFormat(inputFormat)) return BUFFER_PROCESSED_FAILED; } - inputFormat = this.inputFormat; byte[] input = (byte[]) inputBuffer.getData(); int inputLength = inputBuffer.getLength(); int inputOffset = inputBuffer.getOffset(); - int inputBytesNeeded = inputFrameSize(); + int inputBytesNeeded = inputFrameSize(); if ((previousInput != null) && (previousInputLength > 0)) { @@ -299,7 +355,7 @@ else if (inputLength < inputBytesNeeded) byte[] output = validateByteArraySize(outputBuffer, Opus.MAX_PACKET); - int outputLength = Opus.encode(encoder, input, inputOffset, + int outputLength = Opus.encode(encoder, input, inputOffset, inputBytesNeeded / 2, output, Opus.MAX_PACKET); @@ -412,4 +468,31 @@ public Format setInputFormat(Format format) } return inputFormat; } + + /** + * Updates the encoder's expected packet loss percentage to the bigger of + * <tt>percentage</tt> and <tt>this.minPacketLoss</tt>. + * + * @param percentage the expected packet loss percentage to set + */ + public void setExpectedPacketLoss(int percentage) + { + if(opened) + Opus.encoder_set_packet_loss_perc(encoder, + (percentage > minPacketLoss) ? percentage : minPacketLoss); + + if(logger.isTraceEnabled()) + logger.trace("Updating expected packet loss: " + percentage + + " (minimum " + minPacketLoss + ")"); + } + + /** + * Stub. Only added in order to implement the + * <tt>PacketLossAwareEncoder</tt> interface. + * + * @return null + */ + public Component getControlComponent() { + return null; + } } diff --git a/src/org/jitsi/impl/neomedia/codec/audio/opus/Opus.java b/src/org/jitsi/impl/neomedia/codec/audio/opus/Opus.java index bf27ddae..4115d208 100644 --- a/src/org/jitsi/impl/neomedia/codec/audio/opus/Opus.java +++ b/src/org/jitsi/impl/neomedia/codec/audio/opus/Opus.java @@ -8,6 +8,8 @@ /** * Implements an interface to the native opus library + * + * @author Boris Grozev */ public class Opus { @@ -41,6 +43,11 @@ public class Opus */ public static final int OPUS_OK = 0; + /** + * Constant used to set various settings to "automatic" + */ + public static final int OPUS_AUTO = -1000; + /** * Opus constant for an invalid packet */ @@ -139,6 +146,16 @@ public class Opus */ public static native int encoder_set_vbr(long encoder, int use_vbr); + /** + * Wrapper around the native <tt>opus_encoder_ctl</tt> function. Returns the + * current encoder VBR setting + * + * @param encoder The encoder to use + * + * @return The current encoder VBR setting. + */ + public static native int encoder_get_vbr(long encoder); + /** * Wrapper around the native <tt>opus_encoder_ctl</tt> function. Sets the * encoder VBR constraint setting @@ -151,6 +168,16 @@ public class Opus public static native int encoder_set_vbr_constraint(long encoder, int use_cvbr); + /** + * Wrapper around the native <tt>opus_encoder_ctl</tt> function. Returns + * the current VBR constraint encoder setting. + * + * @param encoder The encoder to use + * + * @return the current VBR constraint encoder setting. + */ + public static native int encoder_get_vbr_constraint(long encoder); + /** * Wrapper around the native <tt>opus_encoder_ctl</tt> function. Sets the * encoder complexity setting. @@ -197,6 +224,43 @@ public static native int encoder_set_force_channels(long encoder, */ public static native int encoder_set_dtx(long encoder, int use_dtx); + /** + * Wrapper around the native <tt>opus_encoder_ctl</tt> function. Returns + * the current DTX setting of the encoder. + * + * @param encoder The encoder to use + * + * @return the current DTX setting of the encoder. + */ + public static native int encoder_get_dtx(long encoder); + + /** + * Wrapper around the native <tt>opus_encoder_ctl</tt> function. Sets the + * encoder's expected packet loss percentage. + * + * @param encoder The encoder to use + * @param percentage 0 to turn DTX off, non-zero to turn it on + * + * @return OPUS_OK on success. + */ + public static native int encoder_set_packet_loss_perc(long encoder, + int percentage); + + /** + * Wrapper around the native <tt>opus_encoder_ctl</tt> function. Sets the + * maximum audio bandwidth to be used by the encoder. + * + * @param encoder The encoder to use + * @param maxBandwidth The maximum bandwidth to use, should be one of + * <tt>BANDWIDTH_FULLBAND</tt>, <tt>BANDWIDTH_MEDIUMBAND</tt>, + * <tt>BANDWIDTH_NARROWBAND</tt>, <tt>BANDWIDTH_SUPERWIDEBAND</tt> or + * <tt>BANDWIDTH_WIDEBAND</tt> + * + * @return <tt>OPUS_OK</tt> on success. + */ + public static native int encoder_set_max_bandwidth(long encoder, + int maxBandwidth); + /** * Encodes the input from <tt>input</tt> into an opus packet in * <tt>output</tt>. @@ -254,12 +318,14 @@ public static native int encode(long encoder, byte[] input, int offset, * @param inputSize Size of the packet in bytes. * @param output Output buffer where the output will be stored. * @param outputSize Size in bytes of the output buffer. + * @param decodeFEC 0 to decode the packet normally, 1 to decode the FEC + * data in the packet. * * @return Number of samples decoded */ public static native int decode(long decoder, byte[] input, int inputOffset, int inputSize, byte[] output, - int outputSize); + int outputSize, int decodeFEC); /** * Returns the audio bandwidth of an opus packet, one of diff --git a/src/org/jitsi/impl/neomedia/codec/audio/silk/JavaEncoder.java b/src/org/jitsi/impl/neomedia/codec/audio/silk/JavaEncoder.java index 3343af07..85073444 100644 --- a/src/org/jitsi/impl/neomedia/codec/audio/silk/JavaEncoder.java +++ b/src/org/jitsi/impl/neomedia/codec/audio/silk/JavaEncoder.java @@ -13,15 +13,28 @@ import org.jitsi.service.configuration.*; import org.jitsi.service.libjitsi.*; import org.jitsi.service.neomedia.codec.*; +import org.jitsi.service.neomedia.control.*; +import org.jitsi.util.*; + +import java.awt.*; /** * Implements the SILK encoder as an FMJ/JMF <tt>Codec</tt>. * * @author Dingxin Xu + * @author Boris Grozev */ public class JavaEncoder extends AbstractCodecExt + implements PacketLossAwareEncoder { + /** + * The <tt>Logger</tt> used by this <tt>JavaEncoder</tt> instance + * for logging output. + */ + private final Logger logger + = Logger.getLogger(JavaEncoder.class); + private static final int BITRATE = 40000; private static final int COMPLEXITY = 2; @@ -51,8 +64,34 @@ public class JavaEncoder private static final double[] SUPPORTED_SAMPLE_RATES = new double[] { 8000, 12000, 16000, 24000 }; + /** + * Default value for the use DTX setting + */ private static final boolean USE_DTX = false; + /** + * If <tt>alwaysExpectPacketLoss</tt> is <tt>true</tt> the expected + * packet loss will always be set at or above this threshold. + */ + private static final int MIN_PACKET_LOSS_PERCENTAGE = 3; + + /** + * Whether to use FEC or not. + */ + private boolean useFec; + + /** + * Whether to always assume packet loss and set the encoder's expected + * packet loss over <tt>MIN_PACKET_LOSS_PERCENTAGE</tt>. + */ + private boolean alwaysAssumePacketLoss = true; + + /** + * The actual expected packet loss. Defaults to 0 and can be updated by + * outside classes through <tt>PacketLossUpdater</tt> instances. + */ + private int expectedPacketLoss = 0; + /** * The duration an output <tt>Buffer</tt> produced by this <tt>Codec</tt> * in nanosecond. @@ -118,6 +157,26 @@ public JavaEncoder() super("SILK Encoder", AudioFormat.class, SUPPORTED_OUTPUT_FORMATS); inputFormats = SUPPORTED_INPUT_FORMATS; + + ConfigurationService cfg = LibJitsi.getConfigurationService(); + //TODO: we should have a default value dependent on the SDP parameters + //here. + useFec = cfg.getBoolean(Constants.PROP_SILK_FEC, true); + alwaysAssumePacketLoss + = cfg.getBoolean(Constants.PROP_SILK_ASSUME_PL, true); + + //Update the statically defined value for "speech activity threshold" + //according to our configuration + String satStr = cfg.getString(Constants.PROP_SILK_FEC_SAT, "0.5"); + float sat = Silk_define_FLP.LBRR_SPEECH_ACTIVITY_THRES; + try + { + sat = Float.parseFloat(satStr); + } + catch (Exception e){} + Silk_define_FLP.LBRR_SPEECH_ACTIVITY_THRES = sat; + + addControl(this); } protected void doClose() @@ -141,37 +200,16 @@ protected void doOpen() int channels = inputFormat.getChannels(); - ConfigurationService cfg = LibJitsi.getConfigurationService(); - //TODO: we should have a default value dependent on the SDP parameters - //here. - boolean useFEC = cfg.getBoolean("net.java.sip.communicator.impl." - +"neomedia.codec.audio.silk.encoder.USE_FEC", true); - boolean assumePacketLoss = cfg.getBoolean("net.java.sip.communicator." + - "impl.neomedia.codec.audio.silk.encoder." + - "ALWAYS_ASSUME_PACKET_LOSS", true); - - //Update the statically defined value for "speech activity threshold" - //according to our configuration - String satStr = cfg.getString("net.java.sip.communicator.impl.neomedia" - + ".codec.audio.silk.encoder.SPEECH_ACTIVITY_THRESHOLD", "0.5"); - float sat = Silk_define_FLP.LBRR_SPEECH_ACTIVITY_THRES; - try - { - sat = Float.parseFloat(satStr); - } - catch (Exception e){} - Silk_define_FLP.LBRR_SPEECH_ACTIVITY_THRES = sat; - encControl.API_sampleRate = (int) sampleRate; encControl.bitRate = BITRATE; encControl.complexity = COMPLEXITY; encControl.maxInternalSampleRate = encControl.API_sampleRate; - encControl.packetLossPercentage = assumePacketLoss ? 3 : 0; + setExpectedPacketLoss(0); encControl.packetSize = (int) ((JavaDecoder.FRAME_DURATION * sampleRate * channels) / 1000); encControl.useDTX = USE_DTX ? 1 : 0; - encControl.useInBandFEC = useFEC ? 1 : 0; + encControl.useInBandFEC = useFec ? 1 : 0; } protected int doProcess(Buffer inputBuffer, Buffer outputBuffer) @@ -324,4 +362,34 @@ public long computeDuration(long length) } return outputFormat; } + + /** + * Updates the encoder's packet loss percentage. Takes into account + * <tt>this.alwaysAssumePacketLoss</tt>. + * + * @param percentage the expected packet loss percentage to set. + */ + public void setExpectedPacketLoss(int percentage) + { + if(opened) + { + if(alwaysAssumePacketLoss && + MIN_PACKET_LOSS_PERCENTAGE >= percentage) + percentage = MIN_PACKET_LOSS_PERCENTAGE; + encControl.packetLossPercentage = percentage; + if(logger.isTraceEnabled()) + logger.trace("Setting expected packet loss to: " + + percentage); + } + } + + /** + * Stub. Only added in order to implement the + * <tt>PacketLossAwareEncoder</tt> interface. + * + * @return null + */ + public Component getControlComponent() { + return null; + } } diff --git a/src/org/jitsi/impl/neomedia/device/MediaDeviceSession.java b/src/org/jitsi/impl/neomedia/device/MediaDeviceSession.java index 3189bad1..14c478cf 100644 --- a/src/org/jitsi/impl/neomedia/device/MediaDeviceSession.java +++ b/src/org/jitsi/impl/neomedia/device/MediaDeviceSession.java @@ -1026,7 +1026,7 @@ protected List<Player> getPlayers() * @return the JMF <tt>Processor</tt> which transcodes the * <tt>MediaDevice</tt> of this instance into the format of this instance */ - private Processor getProcessor() + public Processor getProcessor() { if (processor == null) processor = createProcessor(); diff --git a/src/org/jitsi/service/neomedia/codec/Constants.java b/src/org/jitsi/service/neomedia/codec/Constants.java index 7a842fe4..a49ea447 100644 --- a/src/org/jitsi/service/neomedia/codec/Constants.java +++ b/src/org/jitsi/service/neomedia/codec/Constants.java @@ -9,12 +9,13 @@ import org.jitsi.util.*; /** - * Allows start import of <tt>org.jitsi.impl.neomedia.codec</tt> - * in order to get the constants define in + * Allows star import of <tt>org.jitsi.service.neomedia.codec</tt> + * in order to get the constants defined in * <tt>org.jitsi.service.neomedia.codec.Constants</tt> without star * import of <tt>org.jitsi.impl.neomedia.codec</tt>. * * @author Lubomir Marinov + * @author Boris Grozev */ public class Constants { @@ -110,6 +111,83 @@ public class Constants */ public static final int VIDEO_HEIGHT; + /** + * The name of the property used to control whether FEC is enabled for SILK + */ + public static final String PROP_SILK_FEC + = "net.java.sip.communicator.impl.neomedia.codec.audio.silk." + + "encoder.USE_FEC"; + + /** + * The name of the property used to control the the + * 'always assume packet loss' setting for SILK + */ + public static final String PROP_SILK_ASSUME_PL + = "net.java.sip.communicator.impl.neomedia.codec.audio.silk." + + "encoder.AWLAYS_ASSUME_PACKET_LOSS"; + + /** + * The name of the property used to control the SILK + * 'speech activity threshold' + */ + public static final String PROP_SILK_FEC_SAT + = "net.java.sip.communicator.impl.neomedia.codec.audio.silk." + + "encoder.SPEECH_ACTIVITY_THRESHOLD"; + + /** + * The name of the property used to control whether FEC support is + * advertised for SILK + */ + public static final String PROP_SILK_ADVERSISE_FEC + = "net.java.sip.communicator.impl.neomedia.codec.audio.silk." + + "ADVERTISE_FEC"; + /** + * The name of the property used to control the Opus encoder + * "audio bandwidth" setting + */ + public static final String PROP_OPUS_BANDWIDTH + = "net.java.sip.communicator.impl.neomedia.codec.audio.opus." + + "encoder.AUDIO_BANDWIDTH"; + + /** + * The name of the property used to control the Opus encoder bitrate setting + */ + public static final String PROP_OPUS_BITRATE + = "net.java.sip.communicator.impl.neomedia.codec.audio.opus." + + "encoder.BITRATE"; + + /** + * The name of the property used to control the Opus encoder "DTX" setting + */ + public static final String PROP_OPUS_DTX + = "net.java.sip.communicator.impl.neomedia.codec.audio.opus." + + "encoder.DTX"; + + /** + * The name of the property used to control whether FEC is enabled for the + * Opus encoder + */ + public static final String PROP_OPUS_FEC + = "net.java.sip.communicator.impl.neomedia.codec.audio.opus." + + "encoder.FEC"; + + /** + * The name of the property used to control the Opus encoder + * "minimum expected packet loss" setting + */ + public static final String PROP_OPUS_MIN_EXPECTED_PACKET_LOSS + = "net.java.sip.communicator.impl.neomedia.codec.audio.opus." + + "encoder.MIN_EXPECTED_PACKET_LOSS"; + + /** + * The name of the property used to control the Opus encoder 'complexity' + * setting + */ + public static final String PROP_OPUS_COMPLEXITY + = "net.java.sip.communicator.impl.neomedia.codec.audio.opus." + + "encoder.COMPLEXITY"; + + static { diff --git a/src/org/jitsi/service/neomedia/control/PacketLossAwareEncoder.java b/src/org/jitsi/service/neomedia/control/PacketLossAwareEncoder.java new file mode 100644 index 00000000..aa1c34ec --- /dev/null +++ b/src/org/jitsi/service/neomedia/control/PacketLossAwareEncoder.java @@ -0,0 +1,24 @@ +/* + * Jitsi, the OpenSource Java VoIP and Instant Messaging client. + * + * Distributable under LGPL license. + * See terms of license at gnu.org. + */ +package org.jitsi.service.neomedia.control; + +import javax.media.*; + +/** + * An interface used to notify encoders about the packet loss which is expected. + * + * @author Boris Grozev + */ +public interface PacketLossAwareEncoder extends Control +{ + /** + * Tells the encoder to expect <tt>percentage</tt> percent packet loss. + * + * @return the percentage of expected packet loss + */ + public void setExpectedPacketLoss(int percentage); +} -- GitLab