package Ġjp . sh igure do . sor a . sdk . channel . rtc Ċ Ċ import Ġandroid . content . Context Ċ import Ġjp . sh igure do . sor a . sdk . channel . option . S ora Media Option Ċ import Ġjp . sh igure do . sor a . sdk . codec . Sim ul cast Video Encoder Factory Wrapper Ċ import Ġjp . sh igure do . sor a . sdk . error . S ora Error Reason Ċ import Ġjp . sh igure do . sor a . sdk . util . S ora Logger Ċ import Ġorg . webrtc . Default Video Decoder Factory Ċ import Ġorg . webrtc . Default Video Encoder Factory Ċ import Ġorg . webrtc . Media Constraints Ċ import Ġorg . webrtc . Peer ConnectionFactory Ċ import Ġorg . webrtc . Software Video Decoder Factory Ċ import Ġorg . webrtc . Software Video Encoder Factory Ċ import Ġorg . webrtc . audio . Audio Device Module Ċ import Ġorg . webrtc . audio . Java Audio Device Module Ċ Ċ class ĠRTC Component Factory ( ĊĠĠĠ Ġprivate Ġval Ġmedia Option : ĠS ora Media Option , ĊĠĠĠ Ġprivate Ġval Ġlistener : ĠPeer Channel . Listener ? Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= ĠRTC Component Factory :: class . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġãĥ¡ ãĤ¤ãĥ³ ãĤ¹ ãĥ¬ ãĥĥãĥī ( UI Ġ ãĤ¹ ãĥ¬ ãĥĥãĥī ) ãģ§ åĳ¼ ãģ° ãĤĮãĤĭ å¿ħè¦ģ ãģĮãģĤãĤĭ ãĢĤ ĊĠĠĠ Ġ// Ġ ãģĿ ãģĨ ãģ§ ãģªãģĦ ãģ¨ ĠEffect Ġãģ® ĠClassLoader . load Class Ġãģ§ ĠN PE ĠãģĮ çĻº çĶŁ ãģĻãĤĭ ãĢĤ ĊĠĠĠ Ġfun Ġcreate Peer ConnectionFactory ( app Context : ĠContext ): ĠPeer ConnectionFactory Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcl Ġ= ĠThread . currentThread (). context ClassLoader ĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" create Peer ConnectionFactory (): Ġclass loader =$ cl ") ĊĠĠĠĠĠĠĠ Ġval Ġfactory Options Ġ= ĠPeer ConnectionFactory . Options () ĊĠĠĠĠĠĠĠ Ġval Ġfactory Builder Ġ= ĠPeer ConnectionFactory . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Options ( factory Options ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠDefault Video Encoder Factory , ĠDefault Video Decoder Factory Ġãģ¯ ĊĠĠĠĠĠĠĠ Ġ// ĠE gl Base . Context ĠãĤĴ ä¸İ ãģĪãĤĭ ãģ¨ ãĥı ãĥ¼ãĥī ãĤ¦ãĤ§ ãĤ¢ ãĤ¨ ãĥ³ ãĤ³ ãĥ¼ãĥ Ģ ãĥ¼ ãĤĴä½¿çĶ¨ ãģĻãĤĭ ĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" video Encoder Factory Ġ=> Ġ${ media Option . video Encoder Factory }") ĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" video Upstream Context Ġ=> Ġ${ media Option . video Upstream Context }") ĊĠĠĠĠĠĠĠ Ġval Ġencoder Factory Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Encoder Factory Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Encoder Factory !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . sim ul cast Enabled Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSim ul cast Video Encoder Factory Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Upstream Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Codec , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Upstream Context Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Video Encoder Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Upstream Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ/* Ġenable Intel Vp 8 Encoder Ġ*/, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ/* Ġenable H 2 6 4 High Profile Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Down stream Context Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Video Encoder Factory ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Down stream Context , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ/* Ġenable Intel Vp 8 Encoder Ġ*/, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse Ġ/* Ġenable H 2 6 4 High Profile Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcontext ĠãģĮ æĮĩå®ļ ãģķãĤĮ ãģ¦ãģĦ ãģª ãģĳ ãĤĮãģ° ãĤ½ãĥķãĥĪ ãĤ¦ãĤ§ ãĤ¢ ãĤ¨ ãĥ³ ãĤ³ ãĥ¼ãĥ Ģ ãĥ¼ ãĤĴä½¿çĶ¨ ãģĻãĤĭ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSoftware Video Encoder Factory () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" video Decoder Factory Ġ=> Ġ${ media Option . video Decoder Factory }") ĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" video Down stream Context Ġ=> Ġ${ media Option . video Down stream Context }") ĊĠĠĠĠĠĠĠ Ġval Ġdecoder Factory Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Decoder Factory Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Decoder Factory !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . video Down stream Context Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Video Decoder Factory ( media Option . video Down stream Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSoftware Video Decoder Factory () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" decoder Factory Ġ=> Ġ$ decoder Factory ") ĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" encoder Factory Ġ=> Ġ$ encoder Factory ") ĊĊĠĠĠĠĠĠĠ Ġdecoder Factory . supported Code cs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" decoder Factory Ġsupported Ġcodec : Ġ${ it . name } Ġ${ it . params }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġencoder Factory . supported Code cs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" encoder Factory Ġsupported Ġcodec : Ġ${ it . name } Ġ${ it . params }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġaudio Device Module Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . audio Option . audio Device Module Ġ!= Ġnull Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . audio Option . audio Device Module !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Java Audio Device ( app Context ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfactory Builder ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Audio Device Module ( audio Device Module ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Video Encoder Factory ( encoder Factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Video Decoder Factory ( decoder Factory ) ĊĠĠĠĠĠĠĠ Ġ// Ġoption Ġãģ§ æ¸ ¡ ãģ£ãģ¦ ãģį ãģŁ åł´åĲĪ ãģ® æīĢæľī æ¨ © ãģ¯ ãĤ¢ãĥĹãĥªãĤ±ãĥ¼ãĤ·ãĥ§ãĥ³ ãģ« ãģĤãĤĭ ãĢĤ ĊĠĠĠĠĠĠĠ Ġ// Ġ ãģĵ ãģĵ ãģ§ çĶŁæĪĲ ãģĹãģŁ åł´åĲĪ ãģłãģĳ è§£ æĶ¾ ãģĻãĤĭ ãĢĤ ĊĠĠĠĠĠĠĠ Ġif Ġ( media Option . audio Option . audio Device Module Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaudio Device Module . release () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfactory Builder . create Peer ConnectionFactory () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate SD P Constraints (): ĠMedia Constraints Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconstraints Ġ= ĠMedia Constraints () ĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" create SD P Constraints : Ġ$ constraints ") ĊĠĠĠĠĠĠĠ Ġreturn Ġconstraints ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Video Manager (): ĠRT CL ocal Video Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvideo Manager Ġ= Ġmedia Option . video Capt urer ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRT CL ocal Video ManagerImpl ( it ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠRTC Null Local Video Manager () ĊĠĠĠĠĠĠĠ ĠS ora Logger . d ( TAG , Ġ" video Manager Ġcreated : Ġ$ video Manager ") ĊĠĠĠĠĠĠĠ Ġreturn Ġvideo Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Audio Manager (): ĠRT CL ocal Audio Manager Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRT CL ocal Audio Manager ( media Option . audio Upstream Enabled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Java Audio Device ( app Context : ĠContext ): ĠAudio Device Module Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġaudio Record Error Callback Ġ= Ġobject Ġ: ĠJava Audio Device Module . Audio Record Error Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Web Rtc Audio Record Init Error ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS ora Logger . e ( TAG , Ġ" on Web Rtc Audio Record Init Error : Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Error ( S ora Error Reason . AUDIO _ RECORD _ INIT _ ERROR , ĠerrorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Web Rtc Audio Record Start Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode : ĠJava Audio Device Module . Audio Record Start ErrorCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS ora Logger . e ( TAG , Ġ" on Web Rtc Audio Record Start Error : Ġ$ errorCode . Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Error ( S ora Error Reason . AUDIO _ RECORD _ START _ ERROR , Ġ"$ errorMessage Ġ[$ errorCode ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Web Rtc Audio Record Error ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS ora Logger . e ( TAG , Ġ" on Web Rtc Audio Record Error : Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Error ( S ora Error Reason . AUDIO _ RECORD _ ERROR , ĠerrorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġaudio Track Error Callback Ġ= Ġobject Ġ: ĠJava Audio Device Module . Audio Track Error Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Web Rtc Audio Track Init Error ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS ora Logger . e ( TAG , Ġ" on Web Rtc Audio Track Init Error : Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Error ( S ora Error Reason . AUDIO _ TRACK _ INIT _ ERROR , ĠerrorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Web Rtc Audio Track Start Error ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode : ĠJava Audio Device Module . Audio Track Start ErrorCode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorMessage : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS ora Logger . e ( TAG , Ġ" on Web Rtc Audio Track Start Error : Ġ$ errorCode . Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Error ( S ora Error Reason . AUDIO _ TRACK _ START _ ERROR , Ġ"$ errorMessage Ġ[$ errorCode ]") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Web Rtc Audio Track Error ( errorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS ora Logger . e ( TAG , Ġ" on Web Rtc Audio Track Error : Ġ$ errorMessage ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreport Error ( S ora Error Reason . AUDIO _ TRACK _ ERROR , ĠerrorMessage ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠJava Audio Device Module . builder ( app Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Use Hardware A co ust ic Echo Cancel er ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJava Audio Device Module . is BuiltIn A co ust ic Echo Cancel er Supported () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . audio Option . use Hardware A co ust ic Echo Cancel er ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Use Hardware Noise Suppress or ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJava Audio Device Module . is BuiltIn Noise Suppress or Supported () Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmedia Option . audio Option . use Hardware Noise Suppress or ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Audio Record Error Callback ( audio Record Error Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Audio Track Error Callback ( audio Track Error Callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Audio Source ( media Option . audio Option . audio Source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Use Ster eo Input ( media Option . audio Option . use Ster eo Input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Use Ster eo Output ( media Option . audio Option . use Ster eo Output ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. create Audio Device Module () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreport Error ( error Reason : ĠS ora Error Reason , ĠerrorMessage : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlistener ?. onError ( error Reason , ĠerrorMessage ) ĊĠĠĠ Ġ} Ċ } Ċ