[NUT] (ods15): r94 - in /trunk/libnut: demuxer.c muxer.c

Author: ods15 Date: Sat Mar 11 17:06:05 2006 New Revision: 94 Log: sync to spec, back_ptr div16 instead of div8 Modified: trunk/libnut/demuxer.c trunk/libnut/muxer.c Modified: trunk/libnut/demuxer.c ============================================================================== --- trunk/libnut/demuxer.c (original) +++ trunk/libnut/demuxer.c Sat Mar 11 17:06:05 2006 @@ -311,7 +311,7 @@ for (i = sl->len; i--; ) { // more often than not, we're adding at end of list off_t pos = sl->s[i].pos >> 1; if (pos > sp.pos) continue; - if (sp.pos < pos + 8) { // syncpoint already in list + if (sp.pos < pos + 16) { // syncpoint already in list sl->s[i].pos = (sp.pos << 1) | (sl->s[i].pos & 1); // refine accuracy of syncpoint position if (pts) { sl->s[i].pos |= 1; @@ -369,7 +369,7 @@ GET_V(tmp, s.pts); GET_V(tmp, s.back_ptr); - s.back_ptr = (s.back_ptr * 8 + 7)<<1; + s.back_ptr = (s.back_ptr * 16 + 15)<<1; set_global_pts(nut, s.pts); @@ -421,7 +421,7 @@ for (i = 0; i < sl->len; i++) { GET_V(tmp, x); - x *= 8; + x *= 16; sl->s[i].pos = (x << 1) + (i ? sl->s[i-1].pos : 1); sl->s[i].back_ptr = 1; sl->s[i].pts = 0; @@ -599,7 +599,7 @@ GET_V(tmp, res->pts); GET_V(tmp, res->back_ptr); - res->back_ptr = (res->back_ptr * 8 + 7) << 1; + res->back_ptr = (res->back_ptr * 16 + 15) << 1; } if (!backwards) return 0; else ptr = bctello(nut->i); @@ -882,7 +882,7 @@ double hi_pd = TO_DOUBLE_PTS(hip); double lo_pd = TO_DOUBLE_PTS(lop); a++; - if (hi - lo < nut->max_distance*2) guess = lo + 8; + if (hi - lo < nut->max_distance*2) guess = lo + 16; else { // linear interpolation #define INTERPOLATE_WEIGHT (19./20) double a = (double)(hi - lo) / (hi_pd - lo_pd); @@ -890,7 +890,7 @@ guess = guess * INTERPOLATE_WEIGHT + (lo+hi)/2 * (1 - INTERPOLATE_WEIGHT); if (hi - guess < nut->max_distance*2) guess = hi - nut->max_distance*2; //(lo + hi)/2; } - if (guess < lo + 8) guess = lo + 8; + if (guess < lo + 8) guess = lo + 16; fprintf(stderr, "\n%d [ (%d,%.3f) .. (%d,%.3f) .. (%d,%.3f) ] ", i, (int)lo, lo_pd, (int)guess, time_pos, (int)hi, hi_pd); if (!nut->seek_status) seek_buf(nut->i, guess, SEEK_SET); nut->seek_status = hi; // so we know where to continue off... @@ -899,7 +899,7 @@ if (s.back_ptr == 1 || s.pos >= hi) { // we got back to 'hi' // either we scanned everything from lo to hi, or we keep trying - if (guess <= lo + 11) sl->s[i].back_ptr |= 1; // we are done! + if (guess <= lo + 16) sl->s[i].back_ptr |= 1; // we are done! else hi = guess; continue; } @@ -964,13 +964,13 @@ nut->last_syncpoint = 0; // last_key is invalid seek_buf(nut->i, s.pos, SEEK_SET); // go back to syncpoint. This will not need a seek. nut->seek_status = s.pos << 1; - if (s.pos > start + 7) goto err_out; // error condition, we didn't get the syncpoint we wanted + if (s.pos > start + 15) goto err_out; // error condition, we didn't get the syncpoint we wanted } if (stopper) { off_t back_ptr = (stopper->pos >> 1) - (stopper->back_ptr>>1); for (i = 1; i < sl->len; i++) { - if ((sl->s[i].pos >> 1) > back_ptr + 7) { + if ((sl->s[i].pos >> 1) > back_ptr + 15) { if (sl->s[i-1].back_ptr & 1) stopper_syncpoint = sl->s[i].pos >> 1; break; } @@ -989,7 +989,7 @@ int header_size = bctello(nut->i) - buf_before; nut->i->buf_ptr -= header_size; if (stopper) { - if ((!stopper_syncpoint && buf_before > (stopper->pos >> 1) - (stopper->back_ptr>>1) + 7) || stopper_syncpoint == buf_before) { + if ((!stopper_syncpoint && buf_before > (stopper->pos >> 1) - (stopper->back_ptr>>1) + 15) || stopper_syncpoint == buf_before) { int n = 1; stopper_syncpoint = buf_before; for (i = 0; i < nut->stream_count; i++) { Modified: trunk/libnut/muxer.c ============================================================================== --- trunk/libnut/muxer.c (original) +++ trunk/libnut/muxer.c Sat Mar 11 17:06:05 2006 @@ -299,7 +299,7 @@ for (j = 0; j < nut->stream_count; j++) n &= keys[j]; if (n) { i--; break; } } - back_ptr = (nut->last_syncpoint - s->s[i].pos) / 8; + back_ptr = (nut->last_syncpoint - s->s[i].pos) / 16; for (i = 0; i < nut->stream_count; i++) { nut->sc[i].last_pts = convert_ts(nut, pts, stream, i); @@ -332,8 +332,8 @@ put_v(tmp, s->len); for (i = 0; i < s->len; i++) { - off_t pos = s->s[i].pos / 8; - off_t last_pos = i ? s->s[i-1].pos / 8 : 0; + off_t pos = s->s[i].pos / 16; + off_t last_pos = i ? s->s[i-1].pos / 16 : 0; put_v(tmp, pos - last_pos); }
participants (1)
-
syncmail@mplayerhq.hu