diff libmpdemux/demux_mkv.c @ 25883:baf32110d3fc

Use defines to give names to the different seek flags. A better solution should be considered later, esp. for the many broken demuxers that do not treat these flags correctly.
author reimar
date Tue, 29 Jan 2008 15:11:38 +0000
parents d4fe6e23283e
children 382672c7480a
line wrap: on
line diff
--- a/libmpdemux/demux_mkv.c	Tue Jan 29 14:58:10 2008 +0000
+++ b/libmpdemux/demux_mkv.c	Tue Jan 29 15:11:38 2008 +0000
@@ -2534,7 +2534,8 @@
               mkv_d->has_first_tc = 1;
             }
           demux_mkv_seek (demuxer,
-                          demuxer->chapters[dvd_chapter-1].start/1000.0, 0.0, 1);
+                          demuxer->chapters[dvd_chapter-1].start/1000.0, 0.0,
+                          SEEK_ABSOLUTE);
         }
     }
 
@@ -3289,14 +3290,14 @@
 demux_mkv_seek (demuxer_t *demuxer, float rel_seek_secs, float audio_delay, int flags)
 {
   free_cached_dps (demuxer);
-  if (!(flags & 2))  /* time in secs */
+  if (!(flags & SEEK_FACTOR))  /* time in secs */
     {
       mkv_demuxer_t *mkv_d = (mkv_demuxer_t *) demuxer->priv;
       stream_t *s = demuxer->stream;
       int64_t target_timecode = 0, diff, min_diff=0xFFFFFFFFFFFFFFFLL;
       int i;
 
-      if (!(flags & 1))  /* relative seek */
+      if (!(flags & SEEK_ABSOLUTE))  /* relative seek */
         target_timecode = (int64_t) (mkv_d->last_pts * 1000.0);
       target_timecode += (int64_t)(rel_seek_secs * 1000.0);
       if (target_timecode < 0)
@@ -3371,7 +3372,7 @@
                 diff = target_timecode + mkv_d->first_tc -
                        (int64_t) mkv_d->indexes[i].timecode * mkv_d->tc_scale / 1000000.0;
 
-                if ((flags & 1 || target_timecode <= mkv_d->last_pts*1000)) {
+                if ((flags & SEEK_ABSOLUTE || target_timecode <= mkv_d->last_pts*1000)) {
                     // Absolute seek or seek backward: find the last index
                     // position before target time
                     if (diff < 0 || diff >= min_diff)
@@ -3408,7 +3409,7 @@
 
       demux_mkv_fill_buffer(demuxer, NULL);
     }
-  else if ((demuxer->movi_end <= 0) || !(flags & 1))
+  else if ((demuxer->movi_end <= 0) || !(flags & SEEK_ABSOLUTE))
     mp_msg (MSGT_DEMUX, MSGL_V, "[mkv] seek unsupported flags\n");
   else
     {