
Author: ods15 Date: Sat Nov 18 16:23:53 2006 New Revision: 241 Modified: trunk/libnut/demuxer.c Log: somewhat cosmetic to interpolate function Modified: trunk/libnut/demuxer.c ============================================================================== --- trunk/libnut/demuxer.c (original) +++ trunk/libnut/demuxer.c Sat Nov 18 16:23:53 2006 @@ -991,14 +991,12 @@ return 0; } -#define INTERPOLATE_WEIGHT (19./20) static off_t seek_interpolate(int max_distance, double time_pos, off_t lo, off_t hi, double lo_pd, double hi_pd) { + double weight = 19./20.; off_t guess; if (hi - lo < max_distance) guess = lo + 16; else { // linear interpolation - double a = (double)(hi - lo) / (hi_pd - lo_pd); - guess = lo + a * (time_pos - lo_pd); - guess = guess * INTERPOLATE_WEIGHT + (lo+hi)/2. * (1 - INTERPOLATE_WEIGHT); + guess = (lo + (double)(hi-lo)/(hi_pd-lo_pd) * (time_pos-lo_pd))*weight + (lo+hi)/2.*(1.-weight); if (hi - guess < max_distance) guess = hi - max_distance; //(lo + hi)/2; } if (guess < lo + 16) guess = lo + 16;
participants (1)
-
ods15