Exemple #1
0
static int ao_opensl_get_parameter(ao_wrapper_t *ao, int cmd, unsigned long arg)
{
    switch (cmd) {
        case DTP_AO_CMD_GET_LATENCY:
            *(int *)(arg) = ao_opensl_get_latency(ao);
            break;
        case DTP_AO_CMD_GET_LEVEL:
            *(int *)(arg) = ao_opensl_level(ao);
            break;
        case DTP_AO_CMD_GET_VOLUME:
            *(int *)(arg) = ao_opensl_get_volume(ao);
            break;
    }
    return 0;
}
Exemple #2
0
static int64_t ao_opensl_get_latency(dtaudio_output_t *aout) {
    int64_t latency;
    int ret = 0;
    int level = 0;
    aout_sys_t *sys = (aout_sys_t *) aout->ao_priv;

#if 1
    TimeGet(aout, &latency);
    if (latency == -1)
        return 0;
    latency = 9 * latency / 100;
#else
    dtaudio_para_t *para = &aout->para;
    level = ao_opensl_level(aout);
    int sample_num;
    float pts_ratio = 0.0;
    pts_ratio = (double) 90000 / para->dst_samplerate;
    sample_num = level / bytesPerSample(aout);
    latency += (sample_num * pts_ratio);
#endif
    //__android_log_print(ANDROID_LOG_DEBUG,TAG, "opensl latency, level:%d latency:%lld \n",level, latency);
    return latency;
}