Skip to content

Video stream error when Chime is used with another instance of WebRTC in the same application. #699

@p1xel

Description

@p1xel

Describe the bug
We use both the Chime iOS SDK (v0.26.2) and WebRTC built for iOS in our application. We have recently updated to the latest version of WebRTC (M129) from an earlier version (M101), and have encountered an error with the display of Chime video streams.

Instead of the video, an image containing the text "Your client does not support hardware acceleration." is displayed - see the screenshot below.

This only happens when the peer sending the video is a web application (using the latest version of the Chime JS SDK). The error does not occur if the peer sending the video is another iOS device.

Additionally, with the DEFAULT (verbose) logging enabled, we can see some differences in the negotiated codecs - see the logs below.

To Reproduce
Steps to reproduce the behavior:

  1. Include both the Chime iOS SDK, and the latest version of WebRTC in an iOS application.
  2. Connect to a Chime session with the iOS application and with an equivalent web application.
  3. Enable the camera in the web application.
  4. Observe the error in the iOS application, instead of the video stream.

Expected behavior
The Chime video stream should be rendered correctly.

Logs

In the working version using the earlier (M101) version of WebRTC, the logs show that H264 is negotiated:

(webrtc_video_engine.cc:907): SetSendParameters: {codecs: [VideoCodec[96:H264], VideoCodec[97:rtx], VideoCodec[98:H264], VideoCodec[99:rtx], VideoCodec[100:VP8], VideoCodec[101:rtx]], conference_mode: no, extensions: [], extmap-allow-mixed: true, max_bandwidth_bps: -1, mid: 1}
(webrtc_video_engine.cc:915): Negotiated codec: VideoCodec[96:H264]
(webrtc_video_engine.cc:915): Negotiated codec: VideoCodec[98:H264]
(webrtc_video_engine.cc:915): Negotiated codec: VideoCodec[100:VP8]

And in the non-working version, the logs show that H264 cannot be negotiated:

(media_session.cc:1016): Couldn't find matching H264 codec.
(webrtc_video_engine.cc:907): SetSendParameters: {codecs: [VideoCodec[100:VP8], VideoCodec[101:rtx]], conference_mode: no, extensions: [], extmap-allow-mixed: true, max_bandwidth_bps: -1, mid: 1}
(webrtc_video_engine.cc:915): Negotiated codec: VideoCodec[100:VP8]

Screenshots
Screenshot 2024-11-28 at 5 27 23 PM

Test environment Info (please complete the following information):

  • Device: iPad Pro (12.9-inch) (3rd generation)
  • Model: MTFR2X/A
  • OS: iPadOS 17.5.1
  • Version AmazonChimeSDK: 0.26.2
  • Version AmazonChimeSDKMedia: 0.23.0
  • Can you reproduce this in the demo app? We have not attempted to do this.

Additional context
This appears to be an interaction between the version of WebRTC that Chime uses internally, and the separate instance that we use in our application. It may be due to a static linking conflict that is being resolved differently now, although we have tried disabling C/C++ symbol export from our build and the problem remains. We have also tried explicitly enabling proprietary codecs and H264 in the WebRTC build settings, but this also has no effect.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions