
Author: ods15 Date: Sat Nov 18 16:27:54 2006 New Revision: 242 Modified: trunk/libnut/demuxer.c Log: placeholder for smart_find_syncpoint(), index based find_syncpoint Modified: trunk/libnut/demuxer.c ============================================================================== --- trunk/libnut/demuxer.c (original) +++ trunk/libnut/demuxer.c Sat Nov 18 16:27:54 2006 @@ -837,11 +837,21 @@ return err; } +static int smart_find_syncpoint(nut_context_t * nut, syncpoint_t * res) { + int err = 0; + if (!nut->dopts.cache_syncpoints & 1) return find_syncpoint(nut, 0, res, 0); + + return find_syncpoint(nut, 0, res, 0); + +err_out: + return err; +} + int nut_read_next_packet(nut_context_t * nut, nut_packet_t * pd) { int err = 0; if (nut->seek_status) { // in error mode! syncpoint_t s; - CHECK(find_syncpoint(nut, 0, &s, 0)); + CHECK(smart_find_syncpoint(nut, &s)); nut->i->buf_ptr = get_buf(nut->i, s.pos); // go back to begginning of syncpoint flush_buf(nut->i); clear_dts_cache(nut); @@ -956,7 +966,7 @@ seek_buf(nut->i, 0, SEEK_SET); nut->seek_status = 1; } - CHECK(find_syncpoint(nut, 0, &sp, 0)); + CHECK(smart_find_syncpoint(nut, &sp)); CHECK(add_syncpoint(nut, sp, NULL, NULL, NULL)); nut->i->buf_ptr = get_buf(nut->i, sp.pos); // rewind to the syncpoint, this is where playback starts... nut->seek_status = 0; @@ -1098,7 +1108,7 @@ nut->seek_status = 1; // find closest syncpoint by linear search, SHOULD be one pointed by back_ptr... buf_before = bctello(nut->i); - CHECK(find_syncpoint(nut, 0, &s, 0)); + CHECK(smart_find_syncpoint(nut, &s)); clear_dts_cache(nut); 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.
participants (1)
-
ods15