mirror of https://git.ffmpeg.org/ffmpeg.git
AUDIOPHILE_KIDDY_MODE
Originally committed as revision 8475 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
50df67d3b5
commit
55fc0eb174
|
@ -35,17 +35,26 @@
|
||||||
|
|
||||||
#define FELEM int16_t
|
#define FELEM int16_t
|
||||||
#define FELEM2 int32_t
|
#define FELEM2 int32_t
|
||||||
|
#define FELEML int64_t
|
||||||
#define FELEM_MAX INT16_MAX
|
#define FELEM_MAX INT16_MAX
|
||||||
#define FELEM_MIN INT16_MIN
|
#define FELEM_MIN INT16_MIN
|
||||||
#define WINDOW_TYPE 9
|
#define WINDOW_TYPE 9
|
||||||
#else
|
#elif !defined(CONFIG_RESAMPLE_AUDIOPHILE_KIDDY_MODE)
|
||||||
#define FILTER_SHIFT 30
|
#define FILTER_SHIFT 30
|
||||||
|
|
||||||
#define FELEM int32_t
|
#define FELEM int32_t
|
||||||
#define FELEM2 int64_t
|
#define FELEM2 int64_t
|
||||||
|
#define FELEML int64_t
|
||||||
#define FELEM_MAX INT32_MAX
|
#define FELEM_MAX INT32_MAX
|
||||||
#define FELEM_MIN INT32_MIN
|
#define FELEM_MIN INT32_MIN
|
||||||
#define WINDOW_TYPE 12
|
#define WINDOW_TYPE 12
|
||||||
|
#else
|
||||||
|
#define FILTER_SHIFT 0
|
||||||
|
|
||||||
|
#define FELEM long double
|
||||||
|
#define FELEM2 long double
|
||||||
|
#define FELEML long double
|
||||||
|
#define WINDOW_TYPE 24
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
@ -123,8 +132,11 @@ void av_build_filter(FELEM *filter, double factor, int tap_count, int phase_coun
|
||||||
|
|
||||||
/* normalize so that an uniform color remains the same */
|
/* normalize so that an uniform color remains the same */
|
||||||
for(i=0;i<tap_count;i++) {
|
for(i=0;i<tap_count;i++) {
|
||||||
v = av_clip(lrintf(tab[i] * scale / norm), FELEM_MIN, FELEM_MAX);
|
#ifdef CONFIG_RESAMPLE_AUDIOPHILE_KIDDY_MODE
|
||||||
filter[ph * tap_count + i] = v;
|
filter[ph * tap_count + i] = tab[i] / norm;
|
||||||
|
#else
|
||||||
|
filter[ph * tap_count + i] = av_clip(lrintf(tab[i] * scale / norm), FELEM_MIN, FELEM_MAX);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
|
@ -156,7 +168,7 @@ void av_build_filter(FELEM *filter, double factor, int tap_count, int phase_coun
|
||||||
maxsf= FFMAX(maxsf, sf);
|
maxsf= FFMAX(maxsf, sf);
|
||||||
minsf= FFMIN(minsf, sf);
|
minsf= FFMIN(minsf, sf);
|
||||||
if(i%11==0){
|
if(i%11==0){
|
||||||
av_log(NULL, AV_LOG_ERROR, "i:%4d ss:%f ff:%f-%f sf:%f-%f\n", i, ss, maxff, minff, maxsf, minsf);
|
av_log(NULL, AV_LOG_ERROR, "i:%4d ss:%f ff:%13.6e-%13.6e sf:%13.6e-%13.6e\n", i, ss, maxff, minff, maxsf, minsf);
|
||||||
minff=minsf= 2;
|
minff=minsf= 2;
|
||||||
maxff=maxsf= -2;
|
maxff=maxsf= -2;
|
||||||
}
|
}
|
||||||
|
@ -259,7 +271,7 @@ int av_resample(AVResampleContext *c, short *dst, short *src, int *consumed, int
|
||||||
int64_t v=0;
|
int64_t v=0;
|
||||||
int sub_phase= (frac<<8) / c->src_incr;
|
int sub_phase= (frac<<8) / c->src_incr;
|
||||||
for(i=0; i<c->filter_length; i++){
|
for(i=0; i<c->filter_length; i++){
|
||||||
int64_t coeff= filter[i]*(256 - sub_phase) + filter[i + c->filter_length]*sub_phase;
|
FELEML coeff= filter[i]*(256 - sub_phase) + filter[i + c->filter_length]*sub_phase;
|
||||||
v += src[sample_index + i] * coeff;
|
v += src[sample_index + i] * coeff;
|
||||||
}
|
}
|
||||||
val= v>>8;
|
val= v>>8;
|
||||||
|
@ -269,8 +281,12 @@ int av_resample(AVResampleContext *c, short *dst, short *src, int *consumed, int
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_RESAMPLE_AUDIOPHILE_KIDDY_MODE
|
||||||
|
dst[dst_index] = av_clip(lrintf(val), -32768, 32767);
|
||||||
|
#else
|
||||||
val = (val + (1<<(FILTER_SHIFT-1)))>>FILTER_SHIFT;
|
val = (val + (1<<(FILTER_SHIFT-1)))>>FILTER_SHIFT;
|
||||||
dst[dst_index] = (unsigned)(val + 32768) > 65535 ? (val>>31) ^ 32767 : val;
|
dst[dst_index] = (unsigned)(val + 32768) > 65535 ? (val>>31) ^ 32767 : val;
|
||||||
|
#endif
|
||||||
|
|
||||||
frac += dst_incr_frac;
|
frac += dst_incr_frac;
|
||||||
index += dst_incr;
|
index += dst_incr;
|
||||||
|
|
Loading…
Reference in New Issue