diff --git a/libavresample/audio_mix.c b/libavresample/audio_mix.c index 62f8bd6c6d..2b3d9f1f7a 100644 --- a/libavresample/audio_mix.c +++ b/libavresample/audio_mix.c @@ -467,13 +467,13 @@ int ff_audio_mix_get_matrix(AudioMix *am, double *matrix, int stride) if ( am->in_channels <= 0 || am->in_channels > AVRESAMPLE_MAX_CHANNELS || am->out_channels <= 0 || am->out_channels > AVRESAMPLE_MAX_CHANNELS) { - av_log(am, AV_LOG_ERROR, "Invalid channel counts\n"); + av_log(am->avr, AV_LOG_ERROR, "Invalid channel counts\n"); return AVERROR(EINVAL); } #define GET_MATRIX_CONVERT(suffix, scale) \ if (!am->matrix_ ## suffix[0]) { \ - av_log(am, AV_LOG_ERROR, "matrix is not set\n"); \ + av_log(am->avr, AV_LOG_ERROR, "matrix is not set\n"); \ return AVERROR(EINVAL); \ } \ for (o = 0; o < am->out_channels; o++) \ @@ -491,7 +491,7 @@ int ff_audio_mix_get_matrix(AudioMix *am, double *matrix, int stride) GET_MATRIX_CONVERT(flt, 1.0); break; default: - av_log(am, AV_LOG_ERROR, "Invalid mix coeff type\n"); + av_log(am->avr, AV_LOG_ERROR, "Invalid mix coeff type\n"); return AVERROR(EINVAL); } @@ -504,7 +504,7 @@ int ff_audio_mix_set_matrix(AudioMix *am, const double *matrix, int stride) if ( am->in_channels <= 0 || am->in_channels > AVRESAMPLE_MAX_CHANNELS || am->out_channels <= 0 || am->out_channels > AVRESAMPLE_MAX_CHANNELS) { - av_log(am, AV_LOG_ERROR, "Invalid channel counts\n"); + av_log(am->avr, AV_LOG_ERROR, "Invalid channel counts\n"); return AVERROR(EINVAL); } @@ -540,7 +540,7 @@ int ff_audio_mix_set_matrix(AudioMix *am, const double *matrix, int stride) CONVERT_MATRIX(flt, v) break; default: - av_log(am, AV_LOG_ERROR, "Invalid mix coeff type\n"); + av_log(am->avr, AV_LOG_ERROR, "Invalid mix coeff type\n"); return AVERROR(EINVAL); } diff --git a/libavresample/avresample.h b/libavresample/avresample.h index a73d6865ac..4841d262c0 100644 --- a/libavresample/avresample.h +++ b/libavresample/avresample.h @@ -252,11 +252,10 @@ int avresample_set_matrix(AVAudioResampleContext *avr, const double *matrix, /** * Set compensation for resampling. * - * This can be called anytime after avresample_open(). If resampling was not - * being done previously, the AVAudioResampleContext is closed and reopened - * with resampling enabled. In this case, any samples remaining in the output - * FIFO and the current channel mixing matrix will be restored after reopening - * the context. + * This can be called anytime after avresample_open(). If resampling is not + * automatically enabled because of a sample rate conversion, the + * "force_resampling" option must have been set to 1 when opening the context + * in order to use resampling compensation. * * @param avr audio resample context * @param sample_delta compensation delta, in samples diff --git a/libavresample/resample.c b/libavresample/resample.c index 15eaa50e23..dc121fe56d 100644 --- a/libavresample/resample.c +++ b/libavresample/resample.c @@ -255,9 +255,10 @@ int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta, if (!compensation_distance && sample_delta) return AVERROR(EINVAL); - /* if resampling was not enabled previously, re-initialize the - AVAudioResampleContext and force resampling */ if (!avr->resample_needed) { +#if FF_API_RESAMPLE_CLOSE_OPEN + /* if resampling was not enabled previously, re-initialize the + AVAudioResampleContext and force resampling */ int fifo_samples; int restore_matrix = 0; double matrix[AVRESAMPLE_MAX_CHANNELS * AVRESAMPLE_MAX_CHANNELS] = { 0 }; @@ -307,6 +308,10 @@ int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta, goto reinit_fail; ff_audio_data_free(&fifo_buf); } +#else + av_log(avr, AV_LOG_ERROR, "Unable to set resampling compensation\n"); + return AVERROR(EINVAL); +#endif } c = avr->resample; c->compensation_distance = compensation_distance; diff --git a/libavresample/version.h b/libavresample/version.h index 53ba802d85..834c942d93 100644 --- a/libavresample/version.h +++ b/libavresample/version.h @@ -39,4 +39,8 @@ * the public API and may change, break or disappear at any time. */ +#ifndef FF_API_RESAMPLE_CLOSE_OPEN +#define FF_API_RESAMPLE_CLOSE_OPEN (LIBAVRESAMPLE_VERSION_MAJOR < 2) +#endif + #endif /* AVRESAMPLE_VERSION_H */