Commit e2adb00e authored by Hendrik Leppkes's avatar Hendrik Leppkes

Merge commit '11b2eed4'

* commit '11b2eed4':
  lavr: Drop deprecated context reinitialization if resampling was not enabled
Merged-by: 's avatarHendrik Leppkes <h.leppkes@gmail.com>
parents cebe51a6 11b2eed4
...@@ -243,62 +243,8 @@ int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta, ...@@ -243,62 +243,8 @@ int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta,
return AVERROR(EINVAL); return AVERROR(EINVAL);
if (!avr->resample_needed) { 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 };
/* buffer any remaining samples in the output FIFO before closing */
fifo_samples = av_audio_fifo_size(avr->out_fifo);
if (fifo_samples > 0) {
fifo_buf = ff_audio_data_alloc(avr->out_channels, fifo_samples,
avr->out_sample_fmt, NULL);
if (!fifo_buf)
return AVERROR(EINVAL);
ret = ff_audio_data_read_from_fifo(avr->out_fifo, fifo_buf,
fifo_samples);
if (ret < 0)
goto reinit_fail;
}
/* save the channel mixing matrix */
if (avr->am) {
ret = avresample_get_matrix(avr, matrix, AVRESAMPLE_MAX_CHANNELS);
if (ret < 0)
goto reinit_fail;
restore_matrix = 1;
}
/* close the AVAudioResampleContext */
avresample_close(avr);
avr->force_resampling = 1;
/* restore the channel mixing matrix */
if (restore_matrix) {
ret = avresample_set_matrix(avr, matrix, AVRESAMPLE_MAX_CHANNELS);
if (ret < 0)
goto reinit_fail;
}
/* re-open the AVAudioResampleContext */
ret = avresample_open(avr);
if (ret < 0)
goto reinit_fail;
/* restore buffered samples to the output FIFO */
if (fifo_samples > 0) {
ret = ff_audio_data_add_to_fifo(avr->out_fifo, fifo_buf, 0,
fifo_samples);
if (ret < 0)
goto reinit_fail;
ff_audio_data_free(&fifo_buf);
}
#else
av_log(avr, AV_LOG_ERROR, "Unable to set resampling compensation\n"); av_log(avr, AV_LOG_ERROR, "Unable to set resampling compensation\n");
return AVERROR(EINVAL); return AVERROR(EINVAL);
#endif
} }
c = avr->resample; c = avr->resample;
c->compensation_distance = compensation_distance; c->compensation_distance = compensation_distance;
......
...@@ -47,8 +47,4 @@ ...@@ -47,8 +47,4 @@
* the public API and may change, break or disappear at any time. * 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 < 3)
#endif
#endif /* AVRESAMPLE_VERSION_H */ #endif /* AVRESAMPLE_VERSION_H */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment