Video codecs selected doesn't match configured ones when one participant uses an app on iOS device

Hi everyone,
We have a self-hosted instance of Jitsi in docker (stable-6726-1) running in AWS. It’s integrated with our webapp via iFrame API. We also have Android and iOS native apps, they both are basically a webview wrapped around our application.
There’s no problems with interconnection of various devices both desktop and mobile, except for a case when one participant has iOS device and another one joins on Android or Desktop browser.

In such case Android/Desktop elects to use H264 codec while iPhone/iPad sends video in VP8. That leads to no video displayed on iOS device and all ok on Android/Desktop side.
VP8 is set as a preferred codec and H264 disabled for both p2p and jvb modes in our config.js, excerpts of which are below:

var config = {
    ...
    enableLayerSuspension: true,
    ...
    // preferH264: true,
     disableH264: true,
    ...

    videoQuality: {
        disabledCodec: 'H264',
        preferredCodec: 'VP8',
        enforcePreferredCodec: false,
        ...

    p2p: {
        enabled: true,
        // preferH264: true,
        preferredCodec: 'VP8',
        disableH264: true,
        disabledCodec: 'H264',
        ...

Once again, in all other combinations, even iOS–iOS, both participants use VP8 (as expected per our config) and see/hear each other with no problem.

Could you please take a look and tell if we’re missing some required entries in config or advise how to further troubleshoot this issue?

Here’s a Console log from Desktop’s browser:
iOS_Desk.txt (51.6 KB)

Other info:
Jitsi in docker, stable-6726-1
iPhone 8 Plus, iPhone X, iPad – all with iOS 15.1
Android devices – os versions 9, 10, 11
Desktop – windows 10, chrome v97 (64-bit)

Thanks in advance.

Can you test this on meet.jit.si and see if you observe the same behavior?

Thanks for a quick reply, Freddy. How can I look at config.js for meet.jit.si?

meet.jit.si/config.js

But again, can you test your webapp on meet.jit.si to see if you experience the issue you’re reporting?

I’ll discuss testing against meet.jit.si with our team. Since the issue appear only in app (safari is not affected) I guess that’ll require redoing of the integration and then rebuilding iOS app.

Meantime, maybe you can advise if there’s a place where I can find details on codecs selection? I used to see entries like below in desktop browser’s console but there none anymore:
[modules/xmpp/JingleSessionPC.js] <R.setVideoCodecs>: JingleSessionPC[p2p=true,initiator=false,sid=ej50lebubuokc] Switching video codec from vp8 to vp9

We’ve made changes needed to integrate our webapp with meet.jit.si and run some tests. Desktop, Android, and even Safari combinations passed just fine, except the fact that connection info popup never displayed p2p (which is enabled per meet.jit.si/config.js) and all conferences seem to be done via jvb. I guess, I’ll open a separate thread for that.

However with an iOS app we’re getting a page shown below with no option to continue via web and actually test the scenario that fails with the self-hosted instance.
As I wrote before, iOS app is barely a webview wrapper around our application. Could you please clarify what criteria are used to deem a browser as not supported? Is it based on user-agent string or feature check is used? Thanks!

We support iOS 14+

We’ve tested with iPhone 8 Plus, iPhone X, iPad – all with iOS 15.1, and it didn’t show “Continue via web” button. Would you like me to report an issue in a separate thread?

@quitrk what about this?

Hi everyone, any other info on this topic would be appreciated. Thanks!

After we’ve adjusted User-Agent sent by our native app to match the one sent by safari, we’ve got “Continue via WEB” back on the page displayed by meet.jit.si.
Tested again and found no issues with codecs thus far.