Exemple #1
0
static int recreate_audio_filters(struct MPContext *mpctx)
{
    assert(mpctx->d_audio);

    struct af_stream *afs = mpctx->d_audio->afilter;
    struct MPOpts *opts = mpctx->opts;

    struct mp_audio in_format;
    mp_audio_buffer_get_format(mpctx->d_audio->decode_buffer, &in_format);
    int new_srate = in_format.rate;

    if (!af_control_any_rev(afs, AF_CONTROL_SET_PLAYBACK_SPEED,
                            &opts->playback_speed))
    {
        new_srate = in_format.rate * opts->playback_speed;
        if (new_srate != afs->output.rate)
            opts->playback_speed = new_srate / (double)in_format.rate;
    }
    afs->input.rate = new_srate;

    if (af_init(afs) < 0) {
        MP_ERR(mpctx, "Couldn't find matching filter/ao format!\n");
        return -1;
    }

    mixer_reinit_audio(mpctx->mixer, mpctx->ao, afs);

    return 0;
}
Exemple #2
0
Fichier : audio.c Projet : wrl/mpv
static int recreate_audio_filters(struct MPContext *mpctx)
{
    assert(mpctx->sh_audio);

    // init audio filters:
    if (!build_afilter_chain(mpctx)) {
        MP_ERR(mpctx, "Couldn't find matching filter/ao format!\n");
        return -1;
    }

    mixer_reinit_audio(mpctx->mixer, mpctx->ao, mpctx->sh_audio->afilter);

    return 0;
}