Android: ask the camera for what Agora asks it for. Where the camera
offers them, its high-quality noise reduction and exposure metered on
the face are requested. A camera where that costs frame rate is found
out in its first seconds and put back on the fast setting.
More bits for the picture. A 1280x720 camera goes out at 2000 kbps in
place of 1500 (at 24 fps), and its two smaller layers are 540p at 800
kbps and 270p at 250 in place of 360p at 350 and 180p at 150: a viewer
the server has to step down sees 540p, not 360p. It applies to a camera
from 1280x720 up to, not including, 1920x1080; smaller and larger ones
are not changed. A bitrate the app sets itself still decides the top.
Where the SDK writes one line about the outgoing camera video: the
codec, whether the encoder is the phone's hardware, and each layer's
size, frame rate, bitrate and how hard it is being compressed. One line
every ten seconds during a call and one whenever any of that changes;
nothing that identifies the user or the room is in it.
Opens the connection to serverUrl before a join is asked for, so
joinChannel starts the token exchange at once instead of first paying
for DNS, TCP and TLS — a few hundred milliseconds on a phone.