Skip to content
Snippets Groups Projects
Commit 53f0090d authored by Michael Niedermayer's avatar Michael Niedermayer
Browse files

faster and slightly less accurate nearest neighbor resampler

Originally committed as revision 3789 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 17bfbd70
No related branches found
No related tags found
No related merge requests found
......@@ -193,22 +193,20 @@ int av_resample(AVResampleContext *c, short *dst, short *src, int *consumed, int
int dst_incr_frac= c->dst_incr % c->src_incr;
int dst_incr= c->dst_incr / c->src_incr;
int compensation_distance= c->compensation_distance;
if(compensation_distance == 0 && c->filter_length == 1 && c->phase_shift==0){
assert(index >= 0);
int64_t index2= ((int64_t)index)<<32;
int64_t incr= (1LL<<32) * c->dst_incr / c->src_incr;
dst_size= FFMIN(dst_size, (src_size-1-index) * (int64_t)c->src_incr / c->dst_incr);
for(dst_index=0; dst_index < dst_size; dst_index++){
if(index < src_size)
dst[dst_index] = src[index];
else
break;
frac += dst_incr_frac;
index += dst_incr;
if(frac >= c->src_incr){
frac -= c->src_incr;
index++;
}
dst[dst_index] = src[index2>>32];
index2 += incr;
}
frac += dst_index * dst_incr_frac;
index += dst_index * dst_incr;
index += frac / c->src_incr;
frac %= c->src_incr;
}else{
for(dst_index=0; dst_index < dst_size; dst_index++){
FELEM *filter= c->filter_bank + c->filter_length*(index & c->phase_mask);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment