comparison stream/stream_dvdnav.c @ 19895:1beb8cfbc948

permit seeking to 0: there's no reason to prevent it
author nicodvb
date Mon, 18 Sep 2006 22:02:43 +0000
parents bec5c0d5fb17
children b6aa47caeb72
comparison
equal deleted inserted replaced
19894:bec5c0d5fb17 19895:1beb8cfbc948
262 262
263 static int seek(stream_t *s, off_t newpos) { 263 static int seek(stream_t *s, off_t newpos) {
264 uint32_t pos = 0, len = 0, sector = 0; 264 uint32_t pos = 0, len = 0, sector = 0;
265 dvdnav_priv_t *priv = s->priv; 265 dvdnav_priv_t *priv = s->priv;
266 266
267 if(newpos==0) { 267 if(newpos==0)
268 if(dvdnav_stream_reset(priv->dvdnav)) 268 dvdnav_stream_reset(priv->dvdnav);
269 s->pos=0; 269
270 }
271 else {
272 if(s->end_pos && newpos > s->end_pos) 270 if(s->end_pos && newpos > s->end_pos)
273 newpos = s->end_pos; 271 newpos = s->end_pos;
274 sector = newpos / 2048ULL; 272 sector = newpos / 2048ULL;
275 if(dvdnav_sector_search(priv->dvdnav, (uint64_t) sector, SEEK_SET) != DVDNAV_STATUS_OK) 273 if(dvdnav_sector_search(priv->dvdnav, (uint64_t) sector, SEEK_SET) != DVDNAV_STATUS_OK)
276 goto fail; 274 goto fail;
277 275
278 s->pos = newpos; 276 s->pos = newpos;
279 }
280 277
281 return 1; 278 return 1;
282 279
283 fail: 280 fail:
284 mp_msg(MSGT_STREAM,MSGL_INFO,"dvdnav_stream, seeking to %"PRIu64" failed: %s\n", newpos, dvdnav_err_to_string(priv->dvdnav)); 281 mp_msg(MSGT_STREAM,MSGL_INFO,"dvdnav_stream, seeking to %"PRIu64" failed: %s\n", newpos, dvdnav_err_to_string(priv->dvdnav));