<div dir="ltr">The only constraint I'm aware on android is on the Frequency, Channels and FrameSize, I'm ok with leaving Channels and FrameSize hardcoded, and I'll add code to check the Frequency value with 44.1 as fallback.<div>

<br></div><div>about: UpdateSize, in the current openSL implementation, you are already changing it in the _reset_ function.</div><div><br></div><div><div class="" style="font-family:monospace;white-space:pre;word-wrap:break-word;color:rgb(0,0,0);padding-left:5.5ex!important">

Device->UpdateSize = (ALuint64)Device->UpdateSize * 44100 / Device->Frequency;</div><div class="" style="font-family:monospace;white-space:pre;word-wrap:break-word;color:rgb(0,0,0);padding-left:5.5ex!important">
Device->UpdateSize = Device->UpdateSize * Device->NumUpdates / 2;</div>
<div class="" style="font-family:monospace;white-space:pre;word-wrap:break-word;color:rgb(0,0,0);padding-left:5.5ex!important">Device->NumUpdates = 2;</div></div><div class="" style="font-family:monospace;white-space:pre;word-wrap:break-word;color:rgb(0,0,0);padding-left:5.5ex!important">

<br></div>Which btw, double the size of the given UpdateSize, since default values are (Frequency = 44100 and NumUpdates = 4)<div><br></div><div>May I change UpdateSize by just a bit</div><div>ie: UpdateSize is 1024, but I'd like to use 1200?</div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Jan 21, 2014 at 1:20 PM, Chris Robinson <span dir="ltr"><<a href="mailto:chris.kcat@gmail.com" target="_blank">chris.kcat@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On 01/21/2014 03:21 AM, Philippe Simons wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I'd like to enable low-lantency output on android.<br>
<br>
For this, the user should request a specific Frequency and UpdateSize when<br>
creating the context.<br>
<br>
Currently the OpenSL implementation, override these with hardcoded values.<br>
I've commented this code to let it uses the values set<br>
by UpdateDeviceParams(), and it seems to works fine on my devices.<br>
<br>
My question is, why is there hardcoded values in the OpenSL implementation,<br>
and can it be safely removed?<br>
</blockquote>
<br></div></div>
They were hardcoded to try to avoid compatibility problems. I don't know what Android/OpenSL is capable of, and I can't test the OpenSL code myself to know how to react to incompatible settings (e.g. unknown/unsupported sample rate or buffer size).<br>


<br>
Reseting the device is particularly touchy because if it doesn't set something usable, the device gets marked as disconnected and basically becomes unusable. The backend's reset method has to be as foolproof as possible, and has to get the underlying device in a known and usable state as best it can, regardless of whatever the initial parameters may have been.<br>


<br>
If you believe your code is robust enough to deal safely with that, though, I can take a look.<br>
<br>
In regards to UpdateSize, however, that shouldn't be controlled by user parameters. The device period/mix size is currently linked to the refresh, but that may change. At most, NumUpdates should scale if the playback frequency needs to change -- e.g. if you request 32khz playback with 2 updates, and you get 48khz playback, the number of updates should increase to 3 so that it takes about the same amount of time to play the whole buffer.<br>


</blockquote></div><br></div>