Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test observations #5

Open
sipsorcery opened this issue Nov 27, 2021 · 0 comments
Open

Test observations #5

sipsorcery opened this issue Nov 27, 2021 · 0 comments

Comments

@sipsorcery
Copy link
Member

sipsorcery commented Nov 27, 2021

An observation note rather than an issue (27 Nov 2021):

  • Tested with the WebRTCReceiver example.
    • Initial 640x480 stream from Chrome to the Windows FOrms application is decoded with very low latency.
    • In one test latency grew very noticeably with a lag of multiple seconds.
    • In other tests latency stayed low.
    • The video decoding did fail, see screenshot, but this corresponded with console message about missinf RTP packets so is more likely a result of mssing input frames rather than a decoder bug. Signal did come back after a minute or two, when Chrome generated the next key frame.
    • No segfaults or memory leaks observed.
    • CPU and memory use very low.

vp8_decode_corruption

  • Same test but requested Chrome video resolution of 1024x768:
    • Chrome initially sends 640 x 360
      • No noticeable latency on decoder.
    • Chrome change resolution to 960x540
      • Noticeable 1 to 2s latency on decoder.
      • RTP missing packets log meessages.
      • AccessViolation exception on decoder
Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
   at Vpx.Net.filter.filter_block2d_first_pass(Byte*, Int32*, UInt32, UInt32, UInt32, UInt32, Int16* ByRef)
   at Vpx.Net.filter.filter_block2d(Byte*, Byte*, UInt32, Int32, Int16*, Int16*)
   at Vpx.Net.filter.vp8_sixtap_predict4x4_c(Byte*, Int32, Int32, Int32, Byte*, Int32)
   at Vpx.Net.vp8_rtcd.vp8_sixtap_predict4x4_c(Byte*, Int32, Int32, Int32, Byte*, Int32)
   at Vpx.Net.vp8_rtcd.vp8_sixtap_predict4x4(Byte*, Int32, Int32, Int32, Byte*, Int32)
   at Vpx.Net.reconinter.build_inter_predictors_b(Vpx.Net.BLOCKD, Byte*, Int32, Byte*, Int32, Vpx.Net.vp8_subpix_fn_t)
   at Vpx.Net.reconinter.build_inter4x4_predictors_mb(Vpx.Net.MACROBLOCKD ByRef)
   at Vpx.Net.reconinter.vp8_build_inter_predictors_mb(Vpx.Net.MACROBLOCKD ByRef)
   at Vpx.Net.decodeframe.decode_macroblock(Vpx.Net.VP8D_COMP, Vpx.Net.MACROBLOCKD, UInt32)
   at Vpx.Net.decodeframe.decode_mb_rows(Vpx.Net.VP8D_COMP)
   at Vpx.Net.decodeframe.vp8_decode_frame(Vpx.Net.VP8D_COMP)
   at Vpx.Net.onyxd.vp8dx_receive_compressed_data(Vpx.Net.VP8D_COMP, Int64)
   at Vpx.Net.vp8_dx.vp8_decode(Vpx.Net.vpx_codec_alg_priv_t, Byte*, UInt32, IntPtr, Int64)
   at Vpx.Net.vpx_decoder.vpx_codec_decode(Vpx.Net.vpx_codec_ctx_t, Byte*, UInt32, IntPtr, Int64)
   at Vpx.Net.VP8Codec.DecodeVideo(Byte[], SIPSorceryMedia.Abstractions.VideoPixelFormatsEnum, SIPSorceryMedia.Abstractions.VideoCodecsEnum)
   at Vpx.Net.Vp8NetVideoEncoderEndPoint.GotVideoFrame(System.Net.IPEndPoint, UInt32, Byte[], SIPSorceryMedia.Abstractions.VideoFormat)
   at SIPSorcery.Net.RTPSession.OnReceive(Int32, System.Net.IPEndPoint, Byte[])
   at SIPSorcery.Net.RTCPeerConnection.OnRTPDataReceived(Int32, System.Net.IPEndPoint, Byte[])
   at SIPSorcery.Net.RtpIceChannel.OnRTPPacketReceived(SIPSorcery.Net.UdpReceiver, Int32, System.Net.IPEndPoint, Byte[])
   at SIPSorcery.Net.UdpReceiver.EndReceiveFrom(System.IAsyncResult)
   at System.Net.LazyAsyncResult.Complete(IntPtr)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Net.ContextAwareResult.Complete(IntPtr)
   at System.Net.Sockets.BaseOverlappedAsyncResult.CompletionPortCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
   at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32, UInt32, System.Threading.NativeOverlapped*)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant