Coder Social home page Coder Social logo

open-webrtc-toolkit / owt-client-android Goto Github PK

View Code? Open in Web Editor NEW
192.0 15.0 96.0 834 KB

Open WebRTC Toolkit client SDK for Android applications.

Home Page: https://01.org/open-webrtc-toolkit

License: Apache License 2.0

Java 95.93% Python 4.07%
webrtc android mcu

owt-client-android's People

Contributors

bert-and-ernie avatar huachunbo avatar inteltiger avatar jianjunz avatar lijinxia avatar lzhai avatar starwarfan avatar taste1981 avatar wenyuanwu99 avatar yanbin7 avatar zengxianhua avatar zhangyihui1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

owt-client-android's Issues

p2p: user1 dispose local stream after user2 disconnect will lead crash

1: user1 and user2 connect server
2: user1 and user2 addAllowId each other
3: user1 publish localstream to user2
4: user2 disconnect server
5: user1 dispose local stream
if (capturer != null){ capturer.stopCapture(); capturer.dispose(); capturer = null; }
if (localStream != null){ localStream.dispose(); localStream = null; }

user1dispose.log

11-15 15:01:09.451 12344-12827/com.intel.webrtc.p2p.sample E/AndroidRuntime: FATAL EXCEPTION: pool-7-thread-1
Process: com.intel.webrtc.p2p.sample, PID: 12344
java.lang.NullPointerException: Attempt to read from field 'long org.webrtc.MediaStream.nativeStream' on a null object reference
at org.webrtc.PeerConnection.removeStream(PeerConnection.java:782)
at com.intel.webrtc.base.PeerConnectionChannel.lambda$removeStream$6$PeerConnectionChannel(PeerConnectionChannel.java:216)
at com.intel.webrtc.base.PeerConnectionChannel$$Lambda$6.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

[P2P] Is the codec of H265 fully supported?

I have two mobile phones (Pixel1-Android9.0), they all have HEVC&AVC hardware decode&encode(Qcom chip) support.
I trying to modify the P2PClientConfiguration in owt.sample.p2p.MainActivity as following:

//one setting: every thing fine!
VideoEncodingParameters h264 = new VideoEncodingParameters(H264);
P2PClientConfiguration configuration = P2PClientConfiguration.builder()
        .addVideoParameters(h264)
        .build();

// another setting : publish success(SDP answer&offer is ok) , local preview success
// but play remote video fail : (
VideoEncodingParameters h265 = new VideoEncodingParameters(H265);
P2PClientConfiguration configuration = P2PClientConfiguration.builder()
        .addVideoParameters(h265)
        .build();

Am I using it incorrectly? Or OWT-P2P-Android does not support H265?

p2p: user2 publish twice failed with different stream

create two client in one device
1: user1 and user2 connect server
2: user1 and user2 addAllowRemoteId eah other
3: user1 and user2 publish camera video each other
4: user2 publish raw stream again to user1

expect: user2 publish raw stream again to user1 success
actual : user2 publish raw stream again to user1 failure

android device
nexus(LGE AOSP android 5.1.1)

log:
07-12 11:34:12.178 22858-22917/owt.test.p2p.apitest I/org.webrtc.Logging: CameraStatistics: Camera fps: 19.
07-12 11:34:12.205 22858-22955/owt.test.p2p.apitest D/OWT: onRenegotiationNeeded
07-12 11:34:12.206 22858-22955/owt.test.p2p.apitest D/OWT: onRenegotiationNeeded
07-12 11:34:12.208 22858-22944/owt.test.p2p.apitest D/OWT: create offer
07-12 11:34:12.232 22858-22955/owt.test.p2p.apitest D/OWT: onSignalingChange HAVE_LOCAL_OFFER
07-12 11:34:12.242 22858-22969/owt.test.p2p.apitest W/art: Native thread exiting without having called DetachCurrentThread (maybe it's going to use a pthread_key_create destructor?): Thread[46,tid=22969,Native,Thread*=0xa2609800,peer=0x130b80a0,"DecodingThread - 22969"]
07-12 11:34:12.244 22858-22883/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoDecoder: release
07-12 11:34:12.333 22858-23041/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoDecoder: Releasing MediaCodec on output thread
07-12 11:34:12.369 190-15540/? I/OMX-VDEC-1080P: omx_vdec::component_deinit() complete
07-12 11:34:12.370 190-15540/? I/OMX-VDEC-1080P: Exit OMX vdec Destructor: fd=138
07-12 11:34:12.371 22858-23041/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoDecoder: Release on output thread done
07-12 11:34:12.372 22858-22883/owt.test.p2p.apitest I/org.webrtc.Logging: SurfaceTextureHelper: stopListening()
07-12 11:34:12.372 22858-22883/owt.test.p2p.apitest I/org.webrtc.Logging: SurfaceTextureHelper: dispose()
07-12 11:34:12.376 22858-22968/owt.test.p2p.apitest W/art: Native thread exiting without having called DetachCurrentThread (maybe it's going to use a pthread_key_create destructor?): Thread[50,tid=22968,Native,Thread*=0xaedff400,peer=0x130d1100,"IncomingVideoSt - 22968"]
07-12 11:34:12.394 22858-22936/owt.test.p2p.apitest D/OWT: onSignalingChange HAVE_REMOTE_OFFER
07-12 11:34:12.417 22858-23057/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoEncoder: initEncode: 640 x 480. @ 300kbps. Fps: 60 Use surface mode: true
07-12 11:34:12.417 22858-22955/owt.test.p2p.apitest D/OWT: onSetSuccess
07-12 11:34:12.418 22858-22936/owt.test.p2p.apitest D/OWT: onSetSuccess
07-12 11:34:12.420 22858-22931/owt.test.p2p.apitest D/OWT: creating answer
07-12 11:34:12.426 22858-23071/owt.test.p2p.apitest I/OMXClient: Using client-side OMX mux.
07-12 11:34:12.429 190-18858/? I/OMX-VENC: Component_init : OMX.qcom.video.encoder.vp8 : return = 0x0
07-12 11:34:12.436 22858-23057/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoEncoder: Format: {mime=video/x-vnd.on2.vp8, frame-rate=60, color-format=2130708361, height=480, width=640, bitrate=300000, i-frame-interval=100, bitrate-mode=2}
07-12 11:34:12.440 22858-22936/owt.test.p2p.apitest D/OWT: onSignalingChange STABLE
07-12 11:34:12.442 190-15542/? E/OMX-VENC: set_parameter: metamode is valid for input port only
07-12 11:34:12.443 190-15542/? W/OMXNodeInstance: [14b:qcom.encoder.vp8] component does not support metadata mode; using fallback
07-12 11:34:12.443 22858-23071/owt.test.p2p.apitest E/ACodec: [OMX.qcom.video.encoder.vp8] storeMetaDataInBuffers (output) failed w/ err -1010
07-12 11:34:12.445 22858-23071/owt.test.p2p.apitest W/ACodec: do not know color format 0x7fa30c04 = 2141391876
07-12 11:34:12.450 22858-23071/owt.test.p2p.apitest W/ACodec: do not know color format 0x7f000789 = 2130708361
07-12 11:34:12.451 22858-22936/owt.test.p2p.apitest D/OWT: onSetSuccess
07-12 11:34:12.454 22858-23076/owt.test.p2p.apitest D/owt_test_util: onSuccess.
07-12 11:34:12.454 22858-22879/owt.test.p2p.apitest D/xxxxxxxxxxxxx: 22222222222222222:
07-12 11:34:12.456 190-15542/? E/OMXNodeInstance: getParameter(14b:qcom.encoder.vp8, ParamVideoAndroidVp8Encoder(0x6f600007)) ERROR: UnsupportedIndex(0x8000101a)
07-12 11:34:12.459 22858-23071/owt.test.p2p.apitest I/ACodec: setupVideoEncoder succeeded
07-12 11:34:12.460 22858-23071/owt.test.p2p.apitest W/ACodec: do not know color format 0x7f000789 = 2130708361
07-12 11:34:12.461 190-31586/? E/OMXNodeInstance: getParameter(14b:qcom.encoder.vp8, ParamVideoAndroidVp8Encoder(0x6f600007)) ERROR: UnsupportedIndex(0x8000101a)
07-12 11:34:12.491 190-18851/? E/OMX-VENC: Calling IOCTL set control for id=99200c, val=1
07-12 11:34:12.491 190-18851/? E/OMX-VENC: Success IOCTL set control for id=99200c, value=0
07-12 11:34:12.497 22858-22955/owt.test.p2p.apitest D/OWT: onSignalingChange STABLE
07-12 11:34:12.503 190-23072/? I/OMX-VENC: open Color conv for RGBA888 W: 640, H: 480
07-12 11:34:12.506 190-15540/? E/OMX-VENC: Calling IOCTL set control for id=99200c, val=1
07-12 11:34:12.506 190-18858/? E/OMX-VENC: Calling IOCTL set control for id=99200c, val=1
07-12 11:34:12.506 190-15540/? E/OMX-VENC: Success IOCTL set control for id=99200c, value=0
07-12 11:34:12.506 22858-22944/owt.test.p2p.apitest D/OWT: create offer
07-12 11:34:12.507 22858-22955/owt.test.p2p.apitest D/OWT: onSetSuccess
07-12 11:34:12.510 190-18858/? E/OMX-VENC: Success IOCTL set control for id=99200c, value=0
07-12 11:34:12.518 22858-22936/owt.test.p2p.apitest D/OWT: onRenegotiationNeeded
07-12 11:34:12.521 22858-23032/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoEncoder: Sync frame generated
07-12 11:34:12.522 190-1144/? E/OMX-VENC: VIDIOC_REQBUFS CAPTURE_MPLANE Failed
07-12 11:34:12.522 190-15539/? E/OMXNodeInstance: getParameter(14b:qcom.encoder.vp8, ParamVideoAndroidVp8Encoder(0x6f600007)) ERROR: UnsupportedIndex(0x8000101a)
07-12 11:34:12.526 22858-23081/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoEncoder: Sync frame generated
07-12 11:34:12.533 22858-22955/owt.test.p2p.apitest D/OWT: onSignalingChange HAVE_LOCAL_OFFER
07-12 11:34:12.537 22858-23082/owt.test.p2p.apitest I/org.webrtc.Logging: EglBase14: SDK version: 22. isEGL14Supported: true
07-12 11:34:12.546 22858-22955/owt.test.p2p.apitest D/OWT: onSetSuccess
07-12 11:34:12.549 22858-22936/owt.test.p2p.apitest D/OWT: onRenegotiationNeeded
07-12 11:34:12.550 22858-22931/owt.test.p2p.apitest D/OWT: create offer
07-12 11:34:12.563 22858-23066/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoDecoder: initDecodeInternal
07-12 11:34:12.563 22858-23082/owt.test.p2p.apitest I/org.webrtc.Logging: SurfaceTextureHelper: Setting listener to org.webrtc.HardwareVideoDecoder@1a8a7a7f
07-12 11:34:12.565 22858-23084/owt.test.p2p.apitest I/org.webrtc.Logging: EglBase14: SDK version: 22. isEGL14Supported: true
07-12 11:34:12.567 22858-23087/owt.test.p2p.apitest I/OMXClient: Using client-side OMX mux.
07-12 11:34:12.569 190-843/? I/OMX-VDEC-1080P: component_init: OMX.qcom.video.decoder.vp8 : fd=168
07-12 11:34:12.569 190-843/? I/OMX-VDEC-1080P: Capabilities: driver_name = msm_vidc_driver, card = msm_vdec_8974, bus_info = , version = 1, capabilities = 4003000
07-12 11:34:12.569 22858-22936/owt.test.p2p.apitest D/OWT: onSignalingChange HAVE_REMOTE_OFFER
07-12 11:34:12.574 190-843/? I/OMX-VDEC-1080P: omx_vdec::component_init() success : fd=168
07-12 11:34:12.578 22858-22936/owt.test.p2p.apitest D/OWT: onSetSuccess
07-12 11:34:12.585 22858-23068/owt.test.p2p.apitest I/org.webrtc.Logging: HardwareVideoDecoder: initDecodeInternal
07-12 11:34:12.586 22858-23084/owt.test.p2p.apitest I/org.webrtc.Logging: SurfaceTextureHelper: Setting listener to org.webrtc.HardwareVideoDecoder@9d11c4e
07-12 11:34:12.586 22858-22931/owt.test.p2p.apitest D/OWT: creating answer
07-12 11:34:12.589 190-809/? E/OMX-VDEC-1080P: get_parameter: unknown param 6f600007
07-12 11:34:12.589 190-809/? E/OMXNodeInstance: getParameter(14c:qcom.decoder.vp8, ParamVideoAndroidVp8Encoder(0x6f600007)) ERROR: UnsupportedIndex(0x8000101a)
07-12 11:34:12.592 22858-22936/owt.test.p2p.apitest D/owt_test_util: onFailure: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer
07-12 11:34:12.593 22858-22879/owt.test.p2p.apitest W/owt_test_util: Renew a latch before its count reaches to zero.
07-12 11:34:12.593 22858-22879/owt.test.p2p.apitest I/org.webrtc.Logging: CameraCapturer: Stop capture
07-12 11:34:12.593 22858-22879/owt.test.p2p.apitest I/org.webrtc.Logging: CameraCapturer: Stop capture: Nulling session
07-12 11:34:12.594 22858-22879/owt.test.p2p.apitest I/org.webrtc.Logging: CameraCapturer: Stop capture done
07-12 11:34:12.594 22858-22917/owt.test.p2p.apitest I/org.webrtc.Logging: Camera1Session: Stop camera1 session on camera 1
07-12 11:34:12.594 22858-22879/owt.test.p2p.apitest I/org.webrtc.Logging: CameraCapturer: dispose
07-12 11:34:12.594 22858-22917/owt.test.p2p.apitest I/org.webrtc.Logging: Camera1Session: Stop internal
07-12 11:34:12.594 22858-22879/owt.test.p2p.apitest I/org.webrtc.Logging: CameraCapturer: Stop capture
07-12 11:34:12.594 22858-22917/owt.test.p2p.apitest I/org.webrtc.Logging: SurfaceTextureHelper: stopListening()
07-12 11:34:12.594 22858-22879/owt.test.p2p.apitest I/org.webrtc.Logging: CameraCapturer: Stop capture: No session open
07-12 11:34:12.594 22858-22879/owt.test.p2p.apitest I/org.webrtc.Logging: CameraCapturer: Stop capture done
07-12 11:34:12.594 190-22996/? D/QCamera3Stream: static void* qcamera::QCamera3Stream::dataProcRoutine(void*): Exit
07-12 11:34:12.594 202-22965/? I/mm-camera: mct_pipeline_process_set:command=8000009
07-12 11:34:12.594 202-22965/? I/mm-camera: mct_pipeline_process_set: stream_type = 1, streamid 2
07-12 11:34:12.594 202-22965/? I/mm-camera-sensor: module_sensor_module_process_event:2128 ide 20002 MCT_EVENT_CONTROL_STREAMOFF
07-12 11:34:12.594 202-22965/? I/mm-camera: port_isp_mct_ctrl_cmd: E, identity = 0x20002, STREAMOFF
07-12 11:34:12.594 202-22965/? I/mm-camera: cpp_module_handle_streamoff_event:2133, info: doing stream-off for identity 0x20002
07-12 11:34:12.594 202-22965/? D/mm-camera: module_faceproc_port_event_func:686] FD_STREAMOFF 0 20002
07-12 11:34:12.594 202-22965/? D/mm-camera-img: faceproc_comp_abort:608] state 2
07-12 11:34:12.595 202-22965/? D/mm-camera-img: Free Wmemory 0
07-12 11:34:12.595 202-22965/? D/mm-camera-img: faceproc_comp_abort:635] X
07-12 11:34:12.595 202-22965/? I/mm-camera: cpp_module_handle_streamoff_event:2187, info: stream-off done for identity 0x20002
07-12 11:34:12.595 202-22965/? I/mm-camera: isp_streamoff: E, session_id = 2, stream_id = 2, stream_type = 1
07-12 11:34:12.595 22858-22936/owt.test.p2p.apitest D/owt_test_util: onFailure: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer

Null object reference when a stream is updated.

This issue was originally reported at https://software.intel.com/en-us/forums/intel-collaboration-suite-for-webrtc/topic/804984.

Environment:

  • Ver: ICS 4.1.1
  • ICS-Conferece
  • Do not use mixing.

log cat

2019-02-11 13:45:26.365 3645-3871/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=4935, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
2019-02-11 13:45:26.367 3645-3871/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=4936, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
2019-02-11 13:45:41.155 8203-8401/com.saeha.ezview.Dev E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-2
Process: com.saeha.ezview.Dev, PID: 8203
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.intel.webrtc.conference.Subscription.onStatusUpdated(com.intel.webrtc.base.MediaConstraints$TrackKind, boolean)' on a null object reference
at com.intel.webrtc.conference.ConferenceClient.lambda$onStreamUpdated$15(ConferenceClient.java:723)
at com.intel.webrtc.conference.-$$Lambda$ConferenceClient$aWl5wjEHeXZzvSUNQcID27_Orgo.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
2019-02-11 13:45:41.157 8203-8354/com.saeha.ezview.Dev E/AndroidRuntime: FATAL EXCEPTION: pool-5-thread-1
Process: com.saeha.ezview.Dev, PID: 8203
java.lang.NullPointerException: Attempt to invoke virtual method 'void com.intel.webrtc.conference.Subscription.onStatusUpdated(com.intel.webrtc.base.MediaConstraints$TrackKind, boolean)' on a null object reference
at com.intel.webrtc.conference.ConferenceClient.lambda$onStreamUpdated$15(ConferenceClient.java:723)
at com.intel.webrtc.conference.-$$Lambda$ConferenceClient$aWl5wjEHeXZzvSUNQcID27_Orgo.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)
2019-02-11 13:45:41.259 3645-3871/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=4942, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN] ]
2019-02-11 13:45:41.275 3645-3871/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ REQUEST id=4941, [ Transports: CELLULAR Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN] ]
2019-02-11 13:45:41.284 3645-3871/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=4939, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]
2019-02-11 13:45:41.288 3645-3871/? E/ConnectivityService: RemoteException caught trying to send a callback msg for NetworkRequest [ LISTEN id=4940, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED] ]

Crash Source - ConferenceClient.class

  • line 656: while(!pcChannel.stream.id().equals(id) && !pcChannel.key.equals(id));
  • line 663: pcChannel.subscription.onStatusUpdated(trackKind, active);

It occurs randomly when a new stream is added or removed.

conference: subscription.stop() lead crash

1: user1 and user2 join room
2 user1 publish local stream
3: user2 subscribe this remote stream
4: user1 publication.stop() this local stream and user2 wait remoteStream.onEnded event
5: user2 call subscription.stop()

user2 crash log:
2019-03-26 22:28:58.793 7740-7845/owt.sample.conference E/AndroidRuntime: FATAL EXCEPTION: EventThread
Process: owt.sample.conference, PID: 7740
java.lang.RuntimeException: Wrong condition.
at owt.base.CheckCondition.RCHECK(CheckCondition.java:42)
at owt.base.CheckCondition.DCHECK(CheckCondition.java:33)
at owt.conference.ConferenceClient.lambda$unsubscribe$35(ConferenceClient.java:401)
at owt.conference.-$$Lambda$ConferenceClient$EIfrUEOOr5Z5IQrmt5Zu4FHy8Xw.call(Unknown Source:6)
at io.socket.client.Socket.onack(Socket.java:379)
at io.socket.client.Socket.onpacket(Socket.java:303)
at io.socket.client.Socket.access$100(Socket.java:24)
at io.socket.client.Socket$2$2.call(Socket.java:120)
at io.socket.emitter.Emitter.emit(Emitter.java:117)
at io.socket.client.Manager.ondecoded(Manager.java:427)
at io.socket.client.Manager.access$1600(Manager.java:30)
at io.socket.client.Manager$7.call(Manager.java:403)
at io.socket.parser.IOParser$Decoder.add(IOParser.java:105)
at io.socket.client.Manager.ondata(Manager.java:419)
at io.socket.client.Manager.access$1000(Manager.java:30)
at io.socket.client.Manager$2.call(Manager.java:370)
at io.socket.emitter.Emitter.emit(Emitter.java:117)
at io.socket.engineio.client.Socket.onPacket(Socket.java:551)
at io.socket.engineio.client.Socket.access$1000(Socket.java:36)
at io.socket.engineio.client.Socket$5.call(Socket.java:335)
at io.socket.emitter.Emitter.emit(Emitter.java:117)
at io.socket.engineio.client.Transport.onPacket(Transport.java:126)
at io.socket.engineio.client.Transport.onData(Transport.java:118)
at io.socket.engineio.client.transports.WebSocket.access$100(WebSocket.java:24)
at io.socket.engineio.client.transports.WebSocket$1$2.run(WebSocket.java:71)
at io.socket.thread.EventThread$2.run(EventThread.java:80)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:764)

[conference] ConferenceClient.info might not work correctly

1: user1 join room
2: user1 publish localstream and wait trigger onStreamAdd event
3: user1 call client1.info().getRemoteStreams().size()

expect client1.info().getRemoteStreams().size()=2 ,but client1.info().getRemoteStreams().size()=1

test 30 times will get one times

Android client SDK allows customizing audio input?

in sdk document i found these description:

1 Implement com.intel.webrtc.base.IcsAudioRecord.AudioFrameGeneratorInterface;

2 Call WebRtcUtils.setCustomizedAudioInput(AudioFrameGeneratorInterface) before instantiating PeerClient or ConferenceClient;

however, i can't find these classes in sdk, have these been removed from ? how can I customize audio input? Any suggestions ?

thanks

randon issue : conference android leave lead NullPointerException

1: user1 join room
2: user2 leave room

crash log
java.lang.NullPointerException: Attempt to invoke virtual method 'owt.conference.Participant owt.conference.ConferenceInfo.self()' on a null object reference
at owt.test.conference.util.ConferenceAction.leave(ConferenceAction.java:211)

Useless line in build.gradle file after pack sample source

please delete useless lines
sample/src/sample/conference/build.gradle:
implementation project(':src:sdk:conference')
sample/src/sample/p2p/build.gradle:
implementation project(':src:sdk:p2p')
sample/src/sample/util/build.gradle:
api project(':src:sdk:base')
api files('../../../dependencies/libwebrtc/libwebrtc.jar')

conference : receive RTCStatsReport get resolution is not currect

1: android join room
2: android publish local stream with resolution (1280*720) ,video codec vp8
3: android subscribe this remote stream with set video codec vp8 and without set resolution ,
4: getStats with remote stream

expect : receive resolution value is dependence by send resolution
but actual : receive resolution value alway 1280 * 720 ,send resolution is not reach (1280 * 720)

screen

p2p chrome(73)<-> android : android republish local stream failed

1: user(chrome(73)) and user2(vivo x23) connect server with videoCodec vp8
2: user1 and user2 addAllowRemoteId each other
3: user1 publish local stream to user2
4: user2 publish local stream to user1
5: user2 call publication.stop()
6:user2 republish local stream again

expect : user2 republish local stream success
actual : user2 republish local stream failed

log:
android.republish.log

conference: Joining twice would lead exception

1: user1 create two token
2: user1 join room with first token
3: user1 join room with second token

11-14 16:53:58.841 20672-20686/oms.test.conference.apitest D/ics_conference_test: getToken: eyJ0b2tlbklkIjoiNWJlYmUwMzgyMTBkYTkwNjFiN2I2MGM3IiwiaG9zdCI6IjEwLjIzOS40NC4xNzo4MDgwIiwic2VjdXJlIjpmYWxzZSwic2lnbmF0dXJlIjoiWlRWaFlXTTFPVGc0WkRjNFltRXpaV0V6WkRjd05HRTBaVEpoWXpCa1pXWmxORFF3Tkdaa016ZG1NakkxWXpjNU1EVm1NRGRsTmpjNVpEVTNOR1l5WWc9PSJ9
11-14 16:53:58.841 20672-20686/oms.test.conference.apitest I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-14 16:53:58.841 20672-20686/oms.test.conference.apitest I/System.out: (HTTPLog)-Static: isSBSettingEnabled false
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ics_conference_test: getToken: eyJ0b2tlbklkIjoiNWJlYmUwMzg0M2ZlZjEwNjIxZDc3ODJmIiwiaG9zdCI6IjEwLjIzOS40NC4xNzo4MDgwIiwic2VjdXJlIjpmYWxzZSwic2lnbmF0dXJlIjoiWTJVeE1qWTBaV0V3TmpVMVptUTVaV1U1WlRKaVptWTROamMyTXpVd01tRTVaVEZpTW1JMFkySXhaVFV6WVRobE5HVmxNbU0xTmpsbU5qVTJNR1ExWXc9PSJ9
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ICS: Connecting to the conference room.
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ICS: Wrong condition.
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ICS: dalvik.system.VMStack.getThreadStackTrace(Native Method)
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ICS: java.lang.Thread.getStackTrace(Thread.java:580)
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ICS: oms.base.CheckCondition.printStackTrace(CheckCondition.java:58)
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ICS: oms.base.CheckCondition.RCHECK(CheckCondition.java:40)
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ICS: oms.base.CheckCondition.DCHECK(CheckCondition.java:32)
11-14 16:53:58.881 20672-20686/oms.test.conference.apitest D/ICS: oms.conference.ConferenceClient.join(ConferenceClient.java:153)

[Conference] NullPointerException on ConferenceInfo.participants

1: new client1 join room without observer
2: new client2 join room with an observer

11-15 14:46:04.651 10910-10985/? D/ics_conference_test: java.lang.NullPointerException: Attempt to read from field 'java.util.List oms.conference.ConferenceInfo.participants' on a null object reference
at oms.conference.ConferenceClient.lambda$onParticipantJoined$47$ConferenceClient(ConferenceClient.java:764)
at oms.conference.ConferenceClient$$Lambda$15.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

conference : user1 subscribe self remoteStream will trigger on serverDisconnect event

1: user1 join room
2: user1 publish localstream
3: user1 subscribe self remoteStream

test 30 times will get one times

onServerDisconnect.log

11-14 11:57:13.581 28025-28257/oms.test.conference.apitest D/ICS: Room disconnected.
11-14 11:57:13.591 28025-28104/oms.test.conference.apitest D/ICS: remove stream
11-14 11:57:13.591 28025-28088/oms.test.conference.apitest D/ics_test_conference: onServerDisconnected.
11-14 11:57:13.591 28025-28053/oms.test.conference.apitest I/libjingle: (audio_device_impl.cc:800): StopRecording
11-14 11:57:13.591 28025-28053/oms.test.conference.apitest I/libjingle: (audio_device_template.h:209): StopRecording
11-14 11:57:13.591 28025-28053/oms.test.conference.apitest I/libjingle: (audio_record_jni.cc:178): StopRecording
11-14 11:57:13.591 28025-28053/oms.test.conference.apitest I/org.webrtc.Logging: WebRtcAudioRecord: stopRecording
11-14 11:57:13.591 28025-28053/oms.test.conference.apitest I/org.webrtc.Logging: WebRtcAudioRecord: stopThread
11-14 11:57:13.591 28025-28088/oms.test.conference.apitest D/ics_conference_test: junit.framework.AssertionFailedError: Unexpected event triggered.
at junit.framework.Assert.fail(Assert.java:50)
at junit.framework.Assert.assertTrue(Assert.java:20)
at oms.test.util.Resultable.onResult(Resultable.java:29)
at oms.test.conference.util.ConferenceClientObserver.onServerDisconnected(ConferenceClientObserver.java:82)
at oms.conference.ConferenceClient.lambda$onRoomDisconnected$42$ConferenceClient(ConferenceClient.java:627)
at oms.conference.ConferenceClient$$Lambda$10.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

[P2P] ConcurrentModificationException

Multiple times of publish, stop and publish will cause this exception.

11-15 15:22:42.591 31033-32587/oms.sample.p2p E/AndroidRuntime: FATAL EXCEPTION: pool-37-thread-1
Process: oms.sample.p2p, PID: 31033
java.util.ConcurrentModificationException
at java.util.LinkedList$LinkIterator.next(LinkedList.java:124)
at oms.base.PeerConnectionChannel.drainRemoteCandidates(PeerConnectionChannel.java:165)
at oms.p2p.P2PPeerConnectionChannel.lambda$onSetSuccess$13$P2PPeerConnectionChannel(P2PPeerConnectionChannel.java:361)
at oms.p2p.P2PPeerConnectionChannel$$Lambda$6.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

p2p: sdk will crash in HUAWEI devices when attach remote stream using FakeRenderer

1: user1(xiaomi) and user2(huawei p20) conncet server with vp8
2: user1 and user2 addAllowRemoteId each other
3: user1 publish localstream to user2
4: user2 attach this remote stream with fakeRenderer

actual : user2 crash
FakeRenderer.log

crash log:
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: Build fingerprint: 'HUAWEI/EML-AL00/HWEML:8.1.0/HUAWEIEML-AL00/190(C00):user/release-keys'
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: Revision: '0'
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: ABI: 'arm64'
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: pid: 18177, tid: 18311, name: DecodingThread >>> owt.sample.p2p <<<
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: Cause: null pointer dereference
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: x0 00000071f8ff3eb0 x1 0000000000000280 x2 0000000000000168 x3 ffffffffffffffff
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: x4 000000000000007c x5 00000071f6dff1b0 x6 000000200006f600 x7 000000000006f600
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: x8 0000000000000000 x9 00000071f6dff170 x10 0000000000000160 x11 0000000000000008
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: x12 00000071f60f7070 x13 00000071f6109970 x14 00000071f60a7726 x15 fffffffffffffd40
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: x16 0000007221fe0a88 x17 00000072c387b470 x18 00000071f60a8226 x19 00000071f6dff160
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: x20 000000723770db40 x21 000000723770db30 x22 00000071f6f877a0 x23 0000000000000280
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: x24 000000723770db40 x25 000000723770db48 x26 0000000000000000 x27 0000000000000000
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: x28 00000071f8f29050 x29 00000071f6dff0b0 x30 0000007221d25320
2019-03-25 15:30:23.962 18327-18327/? A/DEBUG: sp 00000071f6dff060 pc 0000000000000000 pstate 0000000020000000
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: backtrace:
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #00 pc 0000000000000000
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #1 pc 00000000003a031c /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #2 pc 000000000041ddc8 /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #3 pc 000000000041dd08 /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #4 pc 00000000003bea20 /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #5 pc 00000000003ca818 /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #6 pc 00000000003ca8e8 /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #7 pc 00000000005109c0 /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #8 pc 000000000050fc04 /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #9 pc 000000000021fae4 /data/app/owt.sample.p2p-RhE3EnZ1qLVtE7oNqyR2jw==/lib/arm64/libjingle_peerconnection_so.so (offset 0x216000)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #10 pc 0000000000068160 /system/lib64/libc.so (__pthread_start(void*)+36)
2019-03-25 15:30:23.965 18327-18327/? A/DEBUG: #11 pc 000000000001ef04 /system/lib64/libc.so (__start_thread+68)
2019-03-25 15:30:23.975 579-1134/? E/asd: set_data_index_need_deal: pcm data buffer is overload!

[Conference] Video codec H.265 issue

1: android join room
2: android publish localstream with videoCodec H265

mcu : mcu-software-bin-v20181226.tgz and enable h265

D/ICS: dalvik.system.VMStack.getThreadStackTrace(Native Method)
java.lang.Thread.getStackTrace(Thread.java:1567)
oms.base.CheckCondition.printStackTrace(CheckCondition.java:59)
oms.base.CheckCondition.RCHECK(CheckCondition.java:41)
D/ICS: oms.base.CheckCondition.DCHECK(CheckCondition.java:33)
oms.conference.ConferenceClient.getPeerConnection(ConferenceClient.java:505)
D/ICS: oms.conference.ConferenceClient.onProgressMessage(ConferenceClient.java:639)
oms.conference.SignalingChannel.lambda$null$7(SignalingChannel.java:111)
oms.conference.-$$Lambda$SignalingChannel$nfo6HEz3cHtLCZxX3td6HKDK2Os.run(lambda)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
java.lang.Thread.run(Thread.java:762)
E/AndroidRuntime: FATAL EXCEPTION: pool-3-thread-1
Process: oms.sample.conference, PID: 31070
java.lang.RuntimeException: Wrong condition.
at oms.base.CheckCondition.RCHECK(CheckCondition.java:42)
at oms.base.CheckCondition.DCHECK(CheckCondition.java:33)
at oms.conference.ConferenceClient.getPeerConnection(ConferenceClient.java:505)
at oms.conference.ConferenceClient.onProgressMessage(ConferenceClient.java:639)
at oms.conference.SignalingChannel.lambda$null$7(SignalingChannel.java:111)
at oms.conference.-$$Lambda$SignalingChannel$nfo6HEz3cHtLCZxX3td6HKDK2Os.run(lambda)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:762)

p2p send message issues

1: one android device create two client
2: user1 and user2 connect server and allowRemoteId eachother
3: user1 and user2 send message eachother

expect : user1 and user2 send success
but : crash
android device:
nexus LGE AOSP(ANDROID 5.1.1)

logs:
p2p_send.log

[Conference] Native crash during repeatedly publishing and stopping

1: user1 join room
2: user1 publish local stream
3: user1 publication.stop()

repeat step 2 and step 3 for few times
publishStability.log

11-15 14:16:18.331 4396-4440/oms.test.conference.apitest W/System.err: java.util.ConcurrentModificationException
11-15 14:16:18.331 4396-4440/oms.test.conference.apitest W/System.err: at java.util.LinkedList$LinkIterator.next(LinkedList.java:124)
11-15 14:16:18.331 4396-4440/oms.test.conference.apitest W/System.err: at oms.conference.ConferencePeerConnectionChannel.onSetSuccess(ConferencePeerConnectionChannel.java:103)
11-15 14:16:18.331 4396-4440/oms.test.conference.apitest E/rtc: #
# Fatal error in gen/sdk/android/generated_base_jni/jni/../../../../../../../third_party/webrtc/sdk/android/src/jni/jni_generator_helper.h, line 38
# last system error: 38
# Check failed: !env->ExceptionCheck()
#
#
11-15 14:16:18.341 4396-4440/oms.test.conference.apitest A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 4440 (signaling_threa)

LocalStream will Hang up during run automation cases

1: localStream will hand up in this api
mediaStream = MediaStreamFactory.instance().createMediaStream(videoCapturer,
audioMediaConstraints);

run automation test comand : adb shell am instrument -w -e debug false -e size large oms.test.conference.apitest.test/android.test.InstrumentationTestRunner

2018-11-19 14:54:58.396 32483-7099/oms.test.conference.apitest I/org.webrtc.Logging: EglBase14: SDK version: 24. isEGL14Supported: true
2018-11-19 14:54:58.397 32483-7099/oms.test.conference.apitest E/org.webrtc.Logging: SurfaceTextureHelper: CT create failure
2018-11-19 14:54:58.397 32483-7099/oms.test.conference.apitest E/org.webrtc.Logging: SurfaceTextureHelper: java.lang.RuntimeException: Failed to create EGL context: 0x3003
2018-11-19 14:54:58.398 32483-7099/oms.test.conference.apitest E/org.webrtc.Logging: SurfaceTextureHelper: java.lang.RuntimeException: Failed to create EGL context: 0x3003
at org.webrtc.EglBase14.createEglContext(EglBase14.java:274)
at org.webrtc.EglBase14.(EglBase14.java:71)
at org.webrtc.EglBase$$CC.create$$STATIC$$(Unknown Source)
at org.webrtc.SurfaceTextureHelper.(SurfaceTextureHelper.java:104)
at org.webrtc.SurfaceTextureHelper.(SurfaceTextureHelper.java:34)
at org.webrtc.SurfaceTextureHelper$1.call(SurfaceTextureHelper.java:56)
at org.webrtc.SurfaceTextureHelper$1.call(SurfaceTextureHelper.java:51)
at org.webrtc.ThreadUtils$3.run(ThreadUtils.java:173)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.os.HandlerThread.run(HandlerThread.java:61)

[P2P] Datachannel weird message received

Datachannel sometimes will have weird message upon onMessage

06-09 10:46:36.940 22697 22769 W System.err: org.json.JSONException: Value FuyO+aZZdqNb4upT of type java.lang.String cannot be converted to JSONObject
06-09 10:46:36.941 22697 22769 W System.err: at org.json.JSON.typeMismatch(JSON.java:111)
06-09 10:46:36.941 22697 22769 W System.err: at org.json.JSONObject.(JSONObject.java:163)
06-09 10:46:36.941 22697 22769 W System.err: at org.json.JSONObject.(JSONObject.java:176)
06-09 10:46:36.941 22697 22769 W System.err: at oms.p2p.P2PClient.onDataChannelMessage(P2PClient.java:682)
06-09 10:46:36.941 22697 22715 I p2ptransportchannel.cc: (line 1815): Channel[audio|1|RW]: Transport channel state changed from 2 to 1
06-09 10:46:36.941 22697 22715 I jseptransportcontroller.cc: (line 1166): audio Transport 1 state changed. Check if state is complete.
06-09 10:46:36.941 22697 22769 W System.err: at oms.base.PeerConnectionChannel.lambda$onMessage$14(PeerConnectionChannel.java:541)
06-09 10:46:36.941 22697 22769 W System.err: at oms.base.-$$Lambda$PeerConnectionChannel$qQerCsB5raaSu1D_eGZjKfLujaY.run(Unknown Source:4)
06-09 10:46:36.941 22697 22768 D OMS : add ice candidate
06-09 10:46:36.942 22697 22769 W System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
06-09 10:46:36.942 22697 22769 W System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
06-09 10:46:36.942 22697 22769 W System.err: at java.lang.Thread.run(Thread.java:764)

Some android devices can not publish localStream with h264

conference:
1: user1(huawei P20) join room
2: user1 publish local stream with video codec h264
expect: publish video codec h264 success
actual : lead crash
log:
p20.conference.h264.log

p2p:
1: user1(huawei p20) and user2(vivo x23) connect server with only set videoCodec = h264
2: user1 and user2 addAllowRemoteId each other
3: user1 publish local stream to user2
expect : user1 publish success
actual : user1 publish failed
log:
p2p.p20.h264.log

Android client SDK allows customizing audio input?

in sdk document i found these description:

1 Implement com.intel.webrtc.base.IcsAudioRecord.AudioFrameGeneratorInterface;

2 Call WebRtcUtils.setCustomizedAudioInput(AudioFrameGeneratorInterface) before instantiating PeerClient or ConferenceClient;

however, i can't find these classes in sdk, have these been removed from ? how can I customize audio input? Any suggestions with native implementation?

android docs : index.html description is wrong

11 Customize audio input
Instead of getting audio data from device microphone, our Android client SDK allows customizing audio input which enables media stream to get audio data from the source that application customizes. To set a customized audio input, please follow these steps:

Implement owt.base.IcsAudioRecord.AudioFrameGeneratorInterface;
Call WebRtcUtils.setCustomizedAudioInput(AudioFrameGeneratorInterface) before instantiating PeerClient or ConferenceClient;
Note: * Other names and brands may be claimed as the property of others.

I can not found owt.base.IcsAudioRecord.AudioFrameGeneratorInterface;

conference : no frame send after publish local stream two hour later

1: android connect server
2: adroid publish localstream with videoCodec h264 and resolution 1080p
3: android subscribe mix stream and this remote stream with h264
4: wait two hour

expect : android published video is good
actual : android send birtate =0 after publish two hour

android device : vivo x23
mcu version : mcu-all-bin-v20190315.tgz

Attach remote stream with fakeRander lead crash

test in one android device
1: user1 and user2 and connect server with video codec vp9
2: user1 publish local stream to user2
3: user2 attach remoteStream with fakeRander

android device: nexus LGE AOSP (android 5.1.1)

fakeRander:
public class FakeRenderer implements VideoSink {
private int framesRendered = 0;
private int width = 0;
private int height = 0;
private ArrayList<byte[]> oneFrameByte = null;
private final Object lock = new Object();

public int frameWidth() {
    synchronized (lock) {
        return width;
    }
}

public int frameHeight() {
    synchronized (lock) {
        return height;
    }
}

public int getFramesRendered(int timeout) {
    SystemClock.sleep(timeout);
    synchronized (lock) {
        return framesRendered;
    }
}

public void checkLocalStreamFrame(boolean isBackFrame) {
    // TODO
}

private void checkVideoFrame(byte[] bytes, int value, boolean isblack) {
    // TODO
}

@Override
public void onFrame(VideoFrame videoFrame) {
    synchronized (lock) {
        ++framesRendered;
        width = videoFrame.getRotatedWidth();
        height = videoFrame.getRotatedHeight();
    }
    videoFrame.release();
}

}

log:
07-11 11:50:43.278 27923-28078/owt.test.conference.apitest A/libc: /usr/local/google/buildbot/src/android/ndk-release-r16/external/libcxx/../../external/libcxxabi/src/abort_message.cpp:73: abort_message: assertion "Pure virtual function called!" failed
07-11 11:50:43.278 27923-28078/owt.test.conference.apitest A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 28078 (IncomingVideoSt)
07-11 11:50:43.331 187-187/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
07-11 11:50:43.331 187-187/? I/DEBUG: Build fingerprint: 'Android/aosp_hammerhead/hammerhead:5.1.1/LMY48I/luq09101559:userdebug/test-keys'
07-11 11:50:43.331 187-187/? I/DEBUG: Revision: '11'
07-11 11:50:43.331 187-187/? I/DEBUG: ABI: 'arm'
07-11 11:50:43.331 187-187/? I/DEBUG: pid: 27923, tid: 28078, name: IncomingVideoSt >>> owt.test.conference.apitest <<<
07-11 11:50:43.331 187-187/? I/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
07-11 11:50:43.374 187-187/? I/DEBUG: Abort message: '/usr/local/google/buildbot/src/android/ndk-release-r16/external/libcxx/../../external/libcxxabi/src/abort_message.cpp:73: abort_message: assertion "Pure virtual function called!" failed'
07-11 11:50:43.374 187-187/? I/DEBUG: r0 00000000 r1 00006dae r2 00000006 r3 00000000
07-11 11:50:43.374 187-187/? I/DEBUG: r4 9d403db8 r5 00000006 r6 00000000 r7 0000010c
07-11 11:50:43.374 187-187/? I/DEBUG: r8 b4bf8d90 r9 a261e414 sl a261e400 fp a261e794
07-11 11:50:43.374 187-187/? I/DEBUG: ip 00006dae sp 9d403bc0 lr b6deb3c5 pc b6e0f3dc cpsr 60070010
07-11 11:50:43.374 187-187/? I/DEBUG: backtrace:
07-11 11:50:43.374 187-187/? I/DEBUG: #00 pc 0003b3dc /system/lib/libc.so (tgkill+12)
07-11 11:50:43.375 187-187/? I/DEBUG: #1 pc 000173c1 /system/lib/libc.so (pthread_kill+52)
07-11 11:50:43.375 187-187/? I/DEBUG: #2 pc 00017fd3 /system/lib/libc.so (raise+10)
07-11 11:50:43.375 187-187/? I/DEBUG: #3 pc 00014795 /system/lib/libc.so (__libc_android_abort+36)
07-11 11:50:43.375 187-187/? I/DEBUG: #4 pc 00012f44 /system/lib/libc.so (abort+4)
07-11 11:50:43.375 187-187/? I/DEBUG: #5 pc 00015ab1 /system/lib/libc.so (__libc_fatal+16)
07-11 11:50:43.375 187-187/? I/DEBUG: #6 pc 00014819 /system/lib/libc.so (__assert2+20)
07-11 11:50:43.375 187-187/? I/DEBUG: #7 pc 002e5faf /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.375 187-187/? I/DEBUG: #8 pc 002f58b3 /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.376 187-187/? I/DEBUG: #9 pc 00007325 /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.376 187-187/? I/DEBUG: #10 pc 00063259 /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.376 187-187/? I/DEBUG: #11 pc 00126827 /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.376 187-187/? I/DEBUG: #12 pc 001268a9 /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.376 187-187/? I/DEBUG: #13 pc 00009515 /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.377 187-187/? I/DEBUG: #14 pc 00068e13 /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.377 187-187/? I/DEBUG: #15 pc 000093df /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.377 187-187/? I/DEBUG: #16 pc 00005f51 /data/app/owt.test.conference.apitest-2/lib/arm/libjingle_peerconnection_so.so
07-11 11:50:43.377 187-187/? I/DEBUG: #17 pc 00016baf /system/lib/libc.so (__pthread_start(void*)+30)
07-11 11:50:43.378 187-187/? I/DEBUG: #18 pc 00014af3 /system/lib/libc.so (__start_thread+6)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.