mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-02-17 12:27:18 +00:00
lavr: Drop deprecated context reinitialization if resampling was not enabled
Deprecated in 11/2012.
This commit is contained in:
parent
9d58639e27
commit
11b2eed43e
@ -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 @@
|
|||||||
* 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 */
|
||||||
|
Loading…
Reference in New Issue
Block a user