You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
lavr: remove automatic context close/open for resampling compensation
It adds unnecessary complication for insignificant usability improvement. The user really should know if they'll need resampling compensation before opening the context. Note that only the documentation has changed. The current functionality will still work until the next major bump.
This commit is contained in:
@@ -252,11 +252,10 @@ int avresample_set_matrix(AVAudioResampleContext *avr, const double *matrix,
|
|||||||
/**
|
/**
|
||||||
* Set compensation for resampling.
|
* Set compensation for resampling.
|
||||||
*
|
*
|
||||||
* This can be called anytime after avresample_open(). If resampling was not
|
* This can be called anytime after avresample_open(). If resampling is not
|
||||||
* being done previously, the AVAudioResampleContext is closed and reopened
|
* automatically enabled because of a sample rate conversion, the
|
||||||
* with resampling enabled. In this case, any samples remaining in the output
|
* "force_resampling" option must have been set to 1 when opening the context
|
||||||
* FIFO and the current channel mixing matrix will be restored after reopening
|
* in order to use resampling compensation.
|
||||||
* the context.
|
|
||||||
*
|
*
|
||||||
* @param avr audio resample context
|
* @param avr audio resample context
|
||||||
* @param sample_delta compensation delta, in samples
|
* @param sample_delta compensation delta, in samples
|
||||||
|
@@ -255,9 +255,10 @@ int avresample_set_compensation(AVAudioResampleContext *avr, int sample_delta,
|
|||||||
if (!compensation_distance && sample_delta)
|
if (!compensation_distance && sample_delta)
|
||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
|
|
||||||
/* if resampling was not enabled previously, re-initialize the
|
|
||||||
AVAudioResampleContext and force resampling */
|
|
||||||
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 fifo_samples;
|
||||||
int restore_matrix = 0;
|
int restore_matrix = 0;
|
||||||
double matrix[AVRESAMPLE_MAX_CHANNELS * AVRESAMPLE_MAX_CHANNELS] = { 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;
|
goto reinit_fail;
|
||||||
ff_audio_data_free(&fifo_buf);
|
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 = avr->resample;
|
||||||
c->compensation_distance = compensation_distance;
|
c->compensation_distance = compensation_distance;
|
||||||
|
@@ -39,4 +39,8 @@
|
|||||||
* 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 < 2)
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* AVRESAMPLE_VERSION_H */
|
#endif /* AVRESAMPLE_VERSION_H */
|
||||||
|
Reference in New Issue
Block a user