diff --git a/libmpdemux/demux_aac.c b/libmpdemux/demux_aac.c index 79ec802917..446efc3510 100644 --- a/libmpdemux/demux_aac.c +++ b/libmpdemux/demux_aac.c @@ -218,7 +218,7 @@ static void demux_aac_seek(demuxer_t *demuxer, float rel_seek_secs, float audio_ ds_free_packs(d_audio); - time = (flags & 1) ? rel_seek_secs - priv->last_pts : rel_seek_secs; + time = (flags & SEEK_ABSOLUTE) ? rel_seek_secs - priv->last_pts : rel_seek_secs; if(time < 0) { stream_seek(demuxer->stream, demuxer->movi_start); diff --git a/libmpdemux/demux_asf.c b/libmpdemux/demux_asf.c index 963bd40512..5922765cc0 100644 --- a/libmpdemux/demux_asf.c +++ b/libmpdemux/demux_asf.c @@ -522,7 +522,7 @@ static void demux_seek_asf(demuxer_t *demuxer,float rel_seek_secs,float audio_de //================= seek in ASF ========================== float p_rate=asf->packetrate; // packets / sec - off_t rel_seek_packs=(flags&2)? // FIXME: int may be enough? + off_t rel_seek_packs=(flags&SEEK_FACTOR)? // FIXME: int may be enough? (rel_seek_secs*(demuxer->movi_end-demuxer->movi_start)/asf->packetsize): (rel_seek_secs*p_rate); off_t rel_seek_bytes=rel_seek_packs*asf->packetsize; @@ -530,7 +530,7 @@ static void demux_seek_asf(demuxer_t *demuxer,float rel_seek_secs,float audio_de //printf("ASF: packs: %d duration: %d \n",(int)fileh.packets,*((int*)&fileh.duration)); // printf("ASF_seek: %d secs -> %d packs -> %d bytes \n", // rel_seek_secs,rel_seek_packs,rel_seek_bytes); - newpos=((flags&1)?demuxer->movi_start:demuxer->filepos)+rel_seek_bytes; + newpos=((flags&SEEK_ABSOLUTE)?demuxer->movi_start:demuxer->filepos)+rel_seek_bytes; if(newpos<0 || newposmovi_start) newpos=demuxer->movi_start; // printf("\r -- asf: newpos=%d -- \n",newpos); stream_seek(demuxer->stream,newpos); diff --git a/libmpdemux/demux_audio.c b/libmpdemux/demux_audio.c index 9449836246..fa86b1d242 100644 --- a/libmpdemux/demux_audio.c +++ b/libmpdemux/demux_audio.c @@ -646,8 +646,8 @@ static void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_ s = demuxer->stream; priv = demuxer->priv; - if(priv->frmt == MP3 && hr_mp3_seek && !(flags & 2)) { - len = (flags & 1) ? rel_seek_secs - priv->next_pts : rel_seek_secs; + if(priv->frmt == MP3 && hr_mp3_seek && !(flags & SEEK_FACTOR)) { + len = (flags & SEEK_ABSOLUTE) ? rel_seek_secs - priv->next_pts : rel_seek_secs; if(len < 0) { stream_seek(s,demuxer->movi_start); len = priv->next_pts + len; @@ -658,8 +658,8 @@ static void demux_audio_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_ return; } - base = flags&1 ? demuxer->movi_start : stream_tell(s); - if(flags&2) + base = flags&SEEK_ABSOLUTE ? demuxer->movi_start : stream_tell(s); + if(flags&SEEK_FACTOR) pos = base + ((demuxer->movi_end - demuxer->movi_start)*rel_seek_secs); else pos = base + (rel_seek_secs*sh_audio->i_bps); diff --git a/libmpdemux/demux_avi.c b/libmpdemux/demux_avi.c index e636383272..ada55cef09 100644 --- a/libmpdemux/demux_avi.c +++ b/libmpdemux/demux_avi.c @@ -571,12 +571,12 @@ void demux_seek_avi(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int int video_chunk_pos=d_video->pos; int i; - if(flags&1){ + if(flags&SEEK_ABSOLUTE){ // seek absolute video_chunk_pos=0; } - if(flags&2){ + if(flags&SEEK_FACTOR){ rel_seek_frames=rel_seek_secs*priv->numberofframes; } diff --git a/libmpdemux/demux_avs.c b/libmpdemux/demux_avs.c index 51d14f0d1f..9eac44fd19 100644 --- a/libmpdemux/demux_avs.c +++ b/libmpdemux/demux_avs.c @@ -418,10 +418,8 @@ static void demux_seek_avs(demuxer_t *demuxer, float rel_seek_secs, float audio_ //mp_msg(MSGT_DEMUX, MSGL_V, "AVS: seek rel_seek_secs = %f - flags = %x\n", rel_seek_secs, flags); - // seek absolute - if (flags&1) video_pos=0; - // seek precent - if (flags&2) rel_seek_secs *= duration; + if (flags&SEEK_ABSOLUTE) video_pos=0; + if (flags&SEEK_FACTOR) rel_seek_secs *= duration; video_pos += rel_seek_secs; if (video_pos < 0) video_pos = 0; diff --git a/libmpdemux/demux_film.c b/libmpdemux/demux_film.c index 65656dd533..ba5b899159 100644 --- a/libmpdemux/demux_film.c +++ b/libmpdemux/demux_film.c @@ -49,9 +49,9 @@ typedef struct film_data_t static void demux_seek_film(demuxer_t *demuxer, float rel_seek_secs, float audio_delay, int flags) { film_data_t *film_data = (film_data_t *)demuxer->priv; - int new_current_chunk=(flags&1)?0:film_data->current_chunk; + int new_current_chunk=(flags&SEEK_ABSOLUTE)?0:film_data->current_chunk; - if(flags&2) + if(flags&SEEK_FACTOR) new_current_chunk += rel_seek_secs * film_data->total_chunks; // 0..1 else new_current_chunk += rel_seek_secs * film_data->chunks_per_second; // secs diff --git a/libmpdemux/demux_fli.c b/libmpdemux/demux_fli.c index 56a427eb11..e66becc62a 100644 --- a/libmpdemux/demux_fli.c +++ b/libmpdemux/demux_fli.c @@ -25,8 +25,8 @@ typedef struct { static void demux_seek_fli(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){ fli_frames_t *frames = (fli_frames_t *)demuxer->priv; sh_video_t *sh_video = demuxer->video->sh; - int newpos=(flags&1)?0:frames->current_frame; - if(flags&2){ + int newpos=(flags&SEEK_ABSOLUTE)?0:frames->current_frame; + if(flags&SEEK_FACTOR){ // float 0..1 newpos+=rel_seek_secs*frames->num_frames; } else { diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index e85315c9e7..96fbc5515e 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -614,12 +614,12 @@ static void demux_seek_lavf(demuxer_t *demuxer, float rel_seek_secs, float audio int avsflags = 0; mp_msg(MSGT_DEMUX,MSGL_DBG2,"demux_seek_lavf(%p, %f, %f, %d)\n", demuxer, rel_seek_secs, audio_delay, flags); - if (flags & 1) { // absolute seek + if (flags & SEEK_ABSOLUTE) { priv->last_pts = priv->avfc->start_time; } else { if (rel_seek_secs < 0) avsflags = AVSEEK_FLAG_BACKWARD; } - if (flags & 2) { // percent seek + if (flags & SEEK_FACTOR) { if (priv->avfc->duration == 0 || priv->avfc->duration == AV_NOPTS_VALUE) return; priv->last_pts += rel_seek_secs * priv->avfc->duration; diff --git a/libmpdemux/demux_mf.c b/libmpdemux/demux_mf.c index 75560c6719..7a03ba76b5 100644 --- a/libmpdemux/demux_mf.c +++ b/libmpdemux/demux_mf.c @@ -18,9 +18,9 @@ static void demux_seek_mf(demuxer_t *demuxer,float rel_seek_secs,float audio_delay,int flags){ mf_t * mf = (mf_t *)demuxer->priv; sh_video_t * sh_video = demuxer->video->sh; - int newpos = (flags & 1)?0:mf->curr_frame - 1; + int newpos = (flags & SEEK_ABSOLUTE)?0:mf->curr_frame - 1; - if ( flags & 2 ) newpos+=rel_seek_secs*(mf->nr_of_files - 1); + if ( flags & SEEK_FACTOR ) newpos+=rel_seek_secs*(mf->nr_of_files - 1); else newpos+=rel_seek_secs * sh_video->fps; if ( newpos < 0 ) newpos=0; if( newpos >= mf->nr_of_files) newpos=mf->nr_of_files - 1; diff --git a/libmpdemux/demux_mkv.c b/libmpdemux/demux_mkv.c index 867dfd2f8a..3d3fed33b1 100644 --- a/libmpdemux/demux_mkv.c +++ b/libmpdemux/demux_mkv.c @@ -2534,7 +2534,8 @@ demux_mkv_open (demuxer_t *demuxer) 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 @@ static void 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 @@ demux_mkv_seek (demuxer_t *demuxer, float rel_seek_secs, float audio_delay, int 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_seek (demuxer_t *demuxer, float rel_seek_secs, float audio_delay, int 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 { diff --git a/libmpdemux/demux_mov.c b/libmpdemux/demux_mov.c index 7bf061698b..4cbf07e7ab 100644 --- a/libmpdemux/demux_mov.c +++ b/libmpdemux/demux_mov.c @@ -2202,19 +2202,19 @@ if(trak->pos==0 && trak->stream_header_len>0){ static float mov_seek_track(mov_track_t* trak,float pts,int flags){ // printf("MOV track seek called %5.3f \n",pts); - if(flags&2) pts*=trak->length; else pts*=(float)trak->timescale; + if(flags&SEEK_FACTOR) pts*=trak->length; else pts*=(float)trak->timescale; if(trak->samplesize){ int sample=pts/trak->duration; // printf("MOV track seek - chunk: %d (pts: %5.3f dur=%d) \n",sample,pts,trak->duration); - if(!(flags&1)) sample+=trak->chunks[trak->pos].sample; // relative + if(!(flags&SEEK_ABSOLUTE)) sample+=trak->chunks[trak->pos].sample; // relative trak->pos=0; while(trak->poschunks_size && trak->chunks[trak->pos].samplepos; if (trak->pos == trak->chunks_size) return -1; pts=(float)(trak->chunks[trak->pos].sample*trak->duration)/(float)trak->timescale; } else { unsigned int ipts; - if(!(flags&1)) pts+=trak->samples[trak->pos].pts; + if(!(flags&SEEK_ABSOLUTE)) pts+=trak->samples[trak->pos].pts; if(pts<0) pts=0; ipts=pts; //printf("MOV track seek - sample: %d \n",ipts); diff --git a/libmpdemux/demux_mpc.c b/libmpdemux/demux_mpc.c index 323d2a15fe..b4e244f2de 100644 --- a/libmpdemux/demux_mpc.c +++ b/libmpdemux/demux_mpc.c @@ -156,9 +156,9 @@ static void demux_mpc_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de da_priv_t* priv = demuxer->priv; stream_t* s = demuxer->stream; float target = rel_seek_secs; - if (flags & 2) + if (flags & SEEK_FACTOR) target *= priv->length; - if (!(flags & 1)) + if (!(flags & SEEK_ABSOLUTE)) target += priv->last_pts; if (target < priv->last_pts) { stream_seek(s, demuxer->movi_start); diff --git a/libmpdemux/demux_mpg.c b/libmpdemux/demux_mpg.c index 39f73b0174..3ebec07a8e 100644 --- a/libmpdemux/demux_mpg.c +++ b/libmpdemux/demux_mpg.c @@ -893,14 +893,14 @@ void demux_seek_mpg(demuxer_t *demuxer,float rel_seek_secs,float audio_delay, in float oldpts = 0; off_t oldpos = demuxer->filepos; float newpts = 0; - off_t newpos = (flags & 1) ? demuxer->movi_start : oldpos; + off_t newpos = (flags & SEEK_ABSOLUTE) ? demuxer->movi_start : oldpos; if(mpg_d) oldpts = mpg_d->last_pts; - newpts = (flags & 1) ? 0.0 : oldpts; + newpts = (flags & SEEK_ABSOLUTE) ? 0.0 : oldpts; //================= seek in MPEG ========================== //calculate the pts to seek to - if(flags & 2) { + if(flags & SEEK_FACTOR) { if (mpg_d && mpg_d->first_to_final_pts_len > 0.0) newpts += mpg_d->first_to_final_pts_len * rel_seek_secs; else @@ -909,7 +909,7 @@ void demux_seek_mpg(demuxer_t *demuxer,float rel_seek_secs,float audio_delay, in newpts += rel_seek_secs; if (newpts < 0) newpts = 0; - if(flags&2){ + if(flags&SEEK_FACTOR){ // float seek 0..1 newpos+=(demuxer->movi_end-demuxer->movi_start)*rel_seek_secs; } else { diff --git a/libmpdemux/demux_nut.c b/libmpdemux/demux_nut.c index 4cf4e6c1b3..6ebec33d10 100644 --- a/libmpdemux/demux_nut.c +++ b/libmpdemux/demux_nut.c @@ -247,12 +247,12 @@ static void demux_seek_nut(demuxer_t * demuxer, float time_pos, float audio_dela int ret; const int tmp[] = { 0, -1 }; - if (!(flags & 1)) { + if (!(flags & SEEK_ABSOLUTE)) { nutflags |= 1; // relative if (time_pos > 0) nutflags |= 2; // forwards } - if (flags & 2) // percent + if (flags & SEEK_FACTOR) time_pos *= priv->s[0].max_pts * (double)priv->s[0].time_base.num / priv->s[0].time_base.den; diff --git a/libmpdemux/demux_ogg.c b/libmpdemux/demux_ogg.c index 9cde771a1b..717f3ccd8d 100644 --- a/libmpdemux/demux_ogg.c +++ b/libmpdemux/demux_ogg.c @@ -1366,8 +1366,8 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de old_pos = ogg_d->pos; //calculate the granulepos to seek to - gp = flags & 1 ? 0 : os->lastpos; - if(flags & 2) { + gp = flags & SEEK_ABSOLUTE ? 0 : os->lastpos; + if(flags & SEEK_FACTOR) { if (ogg_d->final_granulepos > 0) gp += ogg_d->final_granulepos * rel_seek_secs; else @@ -1392,8 +1392,8 @@ static void demux_ogg_seek(demuxer_t *demuxer,float rel_seek_secs,float audio_de pos = ogg_d->syncpoints[sp].page_pos; precision = 0; } else { - pos = flags & 1 ? 0 : ogg_d->pos; - if(flags & 2) + pos = flags & SEEK_ABSOLUTE ? 0 : ogg_d->pos; + if(flags & SEEK_FACTOR) pos += (demuxer->movi_end - demuxer->movi_start) * rel_seek_secs; else { if (ogg_d->final_granulepos > 0) { diff --git a/libmpdemux/demux_rawaudio.c b/libmpdemux/demux_rawaudio.c index a525a75f57..5c3375df3e 100644 --- a/libmpdemux/demux_rawaudio.c +++ b/libmpdemux/demux_rawaudio.c @@ -84,8 +84,8 @@ static void demux_rawaudio_seek(demuxer_t *demuxer,float rel_seek_secs,float aud sh_audio_t* sh_audio = demuxer->audio->sh; off_t base,pos; - base = (flags & 1) ? demuxer->movi_start : stream_tell(s); - if(flags & 2) + base = (flags & SEEK_ABSOLUTE) ? demuxer->movi_start : stream_tell(s); + if(flags & SEEK_FACTOR) pos = base + ((demuxer->movi_end - demuxer->movi_start)*rel_seek_secs); else pos = base + (rel_seek_secs*sh_audio->i_bps); diff --git a/libmpdemux/demux_rawdv.c b/libmpdemux/demux_rawdv.c index 948d2386f0..a21aaabdfd 100644 --- a/libmpdemux/demux_rawdv.c +++ b/libmpdemux/demux_rawdv.c @@ -38,8 +38,8 @@ static void demux_seek_rawdv(demuxer_t *demuxer,float rel_seek_secs,float audio_ { rawdv_frames_t *frames = (rawdv_frames_t *)demuxer->priv; sh_video_t *sh_video = demuxer->video->sh; - off_t newpos=(flags&1)?0:frames->current_frame; - if(flags&2) + off_t newpos=(flags&SEEK_ABSOLUTE)?0:frames->current_frame; + if(flags&SEEK_FACTOR) { // float 0..1 newpos+=rel_seek_secs*frames->frame_number; diff --git a/libmpdemux/demux_rawvideo.c b/libmpdemux/demux_rawvideo.c index 170955a3d2..750f290dc9 100644 --- a/libmpdemux/demux_rawvideo.c +++ b/libmpdemux/demux_rawvideo.c @@ -124,8 +124,8 @@ static void demux_rawvideo_seek(demuxer_t *demuxer,float rel_seek_secs,float aud sh_video_t* sh_video = demuxer->video->sh; off_t pos; - pos = (flags & 1) ? demuxer->movi_start : stream_tell(s); - if(flags & 2) + pos = (flags & SEEK_ABSOLUTE) ? demuxer->movi_start : stream_tell(s); + if(flags & SEEK_FACTOR) pos += ((demuxer->movi_end - demuxer->movi_start)*rel_seek_secs); else pos += (rel_seek_secs*sh_video->i_bps); diff --git a/libmpdemux/demux_real.c b/libmpdemux/demux_real.c index 0efb0450c3..a3f1643210 100644 --- a/libmpdemux/demux_real.c +++ b/libmpdemux/demux_real.c @@ -1813,10 +1813,9 @@ static void demux_seek_real(demuxer_t *demuxer, float rel_seek_secs, float audio if (!streams) return; - if (flags & 1) - /* seek absolute */ + if (flags & SEEK_ABSOLUTE) priv->current_apacket = priv->current_vpacket = 0; - if (flags & 2) // percent seek + if (flags & SEEK_FACTOR) rel_seek_secs *= priv->duration; if ((streams & 1) && priv->current_vpacket >= priv->index_table_size[vid]) diff --git a/libmpdemux/demux_ts.c b/libmpdemux/demux_ts.c index 1c2f0dd483..023342f3b1 100644 --- a/libmpdemux/demux_ts.c +++ b/libmpdemux/demux_ts.c @@ -3107,8 +3107,8 @@ static void demux_seek_ts(demuxer_t *demuxer, float rel_seek_secs, float audio_d video_stats = sh_video->i_bps; } - newpos = (flags & 1) ? demuxer->movi_start : demuxer->filepos; - if(flags & 2) // float seek 0..1 + newpos = (flags & SEEK_ABSOLUTE) ? demuxer->movi_start : demuxer->filepos; + if(flags & SEEK_FACTOR) // float seek 0..1 newpos+=(demuxer->movi_end-demuxer->movi_start)*rel_seek_secs; else { diff --git a/libmpdemux/demux_ty.c b/libmpdemux/demux_ty.c index 5cdb78410f..b985bea7d1 100644 --- a/libmpdemux/demux_ty.c +++ b/libmpdemux/demux_ty.c @@ -760,9 +760,9 @@ static void demux_seek_ty( demuxer_t *demuxer, float rel_seek_secs, float audio_ //================= seek in MPEG ========================== demuxer->filepos = stream_tell( demuxer->stream ); - newpos = ( flags & 1 ) ? demuxer->movi_start : demuxer->filepos; + newpos = ( flags & SEEK_ABSOLUTE ) ? demuxer->movi_start : demuxer->filepos; - if( flags & 2 ) + if( flags & SEEK_FACTOR ) // float seek 0..1 newpos += ( demuxer->movi_end - demuxer->movi_start ) * rel_seek_secs; else diff --git a/libmpdemux/demux_vqf.c b/libmpdemux/demux_vqf.c index dae9daabc0..f706f76ca3 100644 --- a/libmpdemux/demux_vqf.c +++ b/libmpdemux/demux_vqf.c @@ -186,8 +186,8 @@ static void demux_seek_vqf(demuxer_t *demuxer,float rel_seek_secs,float audio_de sh_audio_t* sh_audio = demuxer->audio->sh; off_t base,pos; - base = (flags & 1) ? demuxer->movi_start : stream_tell(s); - if(flags & 2) + base = (flags & SEEK_ABSOLUTE) ? demuxer->movi_start : stream_tell(s); + if(flags & SEEK_FACTOR) pos = base + ((demuxer->movi_end - demuxer->movi_start)*rel_seek_secs); else pos = base + (rel_seek_secs*sh_audio->i_bps); diff --git a/libmpdemux/demux_xmms.c b/libmpdemux/demux_xmms.c index d9347c7881..e156a96bc5 100644 --- a/libmpdemux/demux_xmms.c +++ b/libmpdemux/demux_xmms.c @@ -350,8 +350,8 @@ static void demux_xmms_seek(demuxer_t *demuxer,float rel_seek_secs, if(priv->ip->get_time()<0) return; - pos = (flags & 1) ? 0 : priv->spos / sh_audio->wf->nAvgBytesPerSec; - if (flags & 2) + pos = (flags & SEEK_ABSOLUTE) ? 0 : priv->spos / sh_audio->wf->nAvgBytesPerSec; + if (flags & SEEK_FACTOR) pos+= rel_seek_secs*xmms_length; else pos+= rel_seek_secs; diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c index 98e1a9ed60..b8e96ecdb0 100644 --- a/libmpdemux/demuxer.c +++ b/libmpdemux/demuxer.c @@ -980,7 +980,7 @@ if(!demuxer->seekable){ if(sh_video) sh_video->timer=0; // !!!!!! #endif - if(flags & 1) // absolute seek + if(flags & SEEK_ABSOLUTE) pts = 0.0f; else { if(demuxer->stream_pts == MP_NOPTS_VALUE) @@ -988,7 +988,7 @@ if(!demuxer->seekable){ pts = demuxer->stream_pts; } - if(flags & 2) { // percent seek + if(flags & SEEK_FACTOR) { if(stream_control(demuxer->stream, STREAM_CTRL_GET_TIME_LENGTH, &tmp) == STREAM_UNSUPPORTED) goto dmx_seek; pts += tmp * rel_seek_secs; diff --git a/libmpdemux/demuxer.h b/libmpdemux/demuxer.h index 9e6eaf671b..987aaac3a8 100644 --- a/libmpdemux/demuxer.h +++ b/libmpdemux/demuxer.h @@ -83,6 +83,9 @@ #define DEMUXER_CTRL_SWITCH_VIDEO 14 #define DEMUXER_CTRL_IDENTIFY_PROGRAM 15 +#define SEEK_ABSOLUTE (1 << 0) +#define SEEK_FACTOR (1 << 1) + // Holds one packet/frame/whatever typedef struct demux_packet_st { int len; diff --git a/mplayer.c b/mplayer.c index c48c97cd27..fb1a0b7ed8 100644 --- a/mplayer.c +++ b/mplayer.c @@ -2483,8 +2483,8 @@ static void edl_update(MPContext *mpctx) } -// style & 1 == 0 means seek relative to current position, == 1 means absolute -// style & 2 == 0 means amount in seconds, == 2 means fraction of file length +// style & SEEK_ABSOLUTE == 0 means seek relative to current position, == 1 means absolute +// style & SEEK_FACTOR == 0 means amount in seconds, == 2 means fraction of file length // return -1 if seek failed (non-seekable stream?), 0 otherwise static int seek(MPContext *mpctx, double amount, int style) { @@ -3626,7 +3626,7 @@ if(play_n_frames==0){ } if (seek_to_sec) { - seek(mpctx, seek_to_sec, 1); + seek(mpctx, seek_to_sec, SEEK_ABSOLUTE); end_at.pos += seek_to_sec; } @@ -3831,7 +3831,7 @@ if(step_sec>0) { if(mpctx->loop_times==1) mpctx->loop_times=-1; play_n_frames=play_n_frames_mf; mpctx->eof=0; - abs_seek_pos=1; rel_seek_secs=seek_to_sec; + abs_seek_pos=SEEK_ABSOLUTE; rel_seek_secs=seek_to_sec; loop_seek = 1; }