mimoCall resolution/frame rate

Hello,

I have been working with a mimoCall guest, and getting very variable resolution from their feed, at a fairly consistent bandwidth. I have seen the resolution fluctuate from nearly 720p down to as low as 240p (which really doesn’t look good on a 1080p canvas!). There will also be a drop in frame rate.

The camera being used is a Logitech C920 HD Pro. I am guessing that mimoCall is requesting lower res from the camera, rather than the camera making that decision? How does mimoCall decide what resolution and frame rate it is going to use, and is there any way to control this with settings?

The content is a single person standing in a blank room, with minimal movement, so even when he is moving around such a dramatic drop in res and FPS is surprising.

mimoCall is driven by network bandwidth. mimoCall on your callers computer and mimoCall on your Mac negotiate a network connection. Then, they make best use of the available bandwidth. The parameters that are automatically adapted are frame size and frame rate. To avoid lockup, frame size and rate drop fairly quickly if the bandwidth goes down temporarily and take a long time to go up again. Basically it adjusts to the lowest bandwidth available over a certain time.

There is also a difference between browsers. Microsoft Edge seems to limit video resolution.

1 Like

It seems that mimoCall is very conservative in it’s use of bandwidth.

I had a show tonight where the caller was the only one using a broadband connection of 7.5Mbps (tested before and after the show). The connection would initially start at around 3Mbps and then gradually drop down to around 600Kbps. It never seemed to try to build back up if left, and when I forced a reconnection it would pop back up to 3Mbps and then work its way down again.

It is trying to be a good citizen and only use a portion of available bandwidth?

I would really like the ability to specify some preferences/constraints on a call. I know how much bandwidth I want to aim for. I also know what resolutions I am happy with (e.g. I may be happy starting at 720p rather than 1080p to get a higher quality encode with the same bandwidth, but I would rather drop fps than go lower res).

It seems that mimoCall is very conservative in it’s use of bandwidth.

Yes. It looks at the bandwidth and uses the max amount that is consistently available.

I had a show tonight where the caller was the only one using a broadband connection of 7.5Mbps (tested before and after the show). The connection would initially start at around 3Mbps and then gradually drop down to around 600Kbps. It never seemed to try to build back up if left, and when I forced a reconnection it would pop back up to 3Mbps and then work its way down again.

You can see the bandwidth that’s availble between you and the caller in the mimoCall settings window. This is quite different from what you can measure at the caller’s end which is only the connection between the caller and their ISP. There are many, many different networks between you and the caller with varying available bandwidths.

It is trying to be a good citizen and only use a portion of available bandwidth?

No, it is trying to use as much bandwidth as possible.

I would really like the ability to specify some preferences/constraints on a call. I know how much bandwidth I want to aim for. I also know what resolutions I am happy with (e.g. I may be happy starting at 720p rather than 1080p to get a higher quality encode with the same bandwidth, but I would rather drop fps than go lower res).

I think the priorities are hard coded into WebRTC which is the underlying technology we use for mimoCall. But we’ll check to see if that can be changed. Generally, most important is audio. After that, people usually percieve lower or inconsistent (stuttering) frame rates as lower quality than lower resolution because of the way the human eye works.

Yes. It looks at the bandwidth and uses the max amount that is consistently available.

No, it is trying to use as much bandwidth as possible.

If that is the case then why, when I run a mimoCall over my local gigabit lan, do I still only get an average bandwidth of around 2.5Mbps? And with reduced resolution and frame rate (but negligible CPU usage).

I think the priorities are hard coded into WebRTC […]

A very quick online search reveals that this is far from true, and you have rather a lot of control over bandwidth, resolution, frame rate, etc. and can certainly specify min and max value for all of these.

https://webrtc.github.io/samples/src/content/peerconnection/constraints/

Another issue I have noticed with mimoCall, is that it always seems to have a target frame rate of 30fps, irrespective of the project settings. Since I run my projects at 25p this means that the calls are wasting bandwidth to send extra frames, and adding to the processing at this end needed to convert back down to 25p.

In conclusion, the ability to set min/max values for resolution, bandwidth and frame rate, on a per-call basis would be a fantastic addition to mimoCall (and would allow me to prevent really nasty 320x240 video).

As another data point on this issue, I was watching your livestream on Thursday, and noticed that the mimoCall Achim setup on his local machine was only running at 960 x 540 @ ~2Mb/s (with a project that looks like it was set to 1280 x 720). Surely, on a loopback network this is not a bandwidth limitation…?

It is if you have a really bad Wifi network. :wink:

Wifi is irrelevant; caller and server were on the same machine so the packets would hit the NIC and come straight back again, no Wifi involved.

Or have I fundamentally misunderstood the nature of loopback networking…?

Just reviving this thread. Is there any way to control the bandwidth / resolution of a mimoCall? I had a call last night that looked beautiful in 1080P, but only achieved a frame rate of 0.5 to 5 frames a second. Call was coming in from a remote Community in Canada’s Far North across a “bursty” and high latency connection. Audio was fine, but would have gladly used a lower resolution video at a higher frame rate.

3 Likes