mirror of https://github.com/mpv-player/mpv
Move global rel_seek_secs and abs_seek_pos to mpctx
This commit is contained in:
parent
c1f9fe7d67
commit
3ee6503a07
30
command.c
30
command.c
|
@ -348,8 +348,8 @@ static int mp_property_percent_pos(m_option_t * prop, int action,
|
|||
demuxer_get_percent_pos(mpctx->demuxer));
|
||||
}
|
||||
|
||||
abs_seek_pos = SEEK_ABSOLUTE | SEEK_FACTOR;
|
||||
rel_seek_secs = pos / 100.0;
|
||||
mpctx->abs_seek_pos = SEEK_ABSOLUTE | SEEK_FACTOR;
|
||||
mpctx->rel_seek_secs = pos / 100.0;
|
||||
return M_PROPERTY_OK;
|
||||
}
|
||||
|
||||
|
@ -363,12 +363,12 @@ static int mp_property_time_pos(m_option_t * prop, int action,
|
|||
case M_PROPERTY_SET:
|
||||
if(!arg) return M_PROPERTY_ERROR;
|
||||
M_PROPERTY_CLAMP(prop, *(double*)arg);
|
||||
abs_seek_pos = SEEK_ABSOLUTE;
|
||||
rel_seek_secs = *(double*)arg;
|
||||
mpctx->abs_seek_pos = SEEK_ABSOLUTE;
|
||||
mpctx->rel_seek_secs = *(double*)arg;
|
||||
return M_PROPERTY_OK;
|
||||
case M_PROPERTY_STEP_UP:
|
||||
case M_PROPERTY_STEP_DOWN:
|
||||
rel_seek_secs += (arg ? *(double*)arg : 10.0) *
|
||||
mpctx->rel_seek_secs += (arg ? *(double*)arg : 10.0) *
|
||||
(action == M_PROPERTY_STEP_UP ? 1.0 : -1.0);
|
||||
return M_PROPERTY_OK;
|
||||
}
|
||||
|
@ -427,21 +427,21 @@ static int mp_property_chapter(m_option_t *prop, int action, void *arg,
|
|||
default:
|
||||
return M_PROPERTY_NOT_IMPLEMENTED;
|
||||
}
|
||||
rel_seek_secs = 0;
|
||||
abs_seek_pos = 0;
|
||||
mpctx->rel_seek_secs = 0;
|
||||
mpctx->abs_seek_pos = 0;
|
||||
chapter = demuxer_seek_chapter(mpctx->demuxer, chapter, 1,
|
||||
&next_pts, &chapter_num, &chapter_name);
|
||||
if (chapter >= 0) {
|
||||
if (next_pts > -1.0) {
|
||||
abs_seek_pos = SEEK_ABSOLUTE;
|
||||
rel_seek_secs = next_pts;
|
||||
mpctx->abs_seek_pos = SEEK_ABSOLUTE;
|
||||
mpctx->rel_seek_secs = next_pts;
|
||||
}
|
||||
if (chapter_name)
|
||||
set_osd_msg(OSD_MSG_TEXT, 1, osd_duration,
|
||||
MSGTR_OSDChapter, chapter + 1, chapter_name);
|
||||
}
|
||||
else if (step_all > 0)
|
||||
rel_seek_secs = 1000000000.;
|
||||
mpctx->rel_seek_secs = 1000000000.;
|
||||
else
|
||||
set_osd_msg(OSD_MSG_TEXT, 1, osd_duration,
|
||||
MSGTR_OSDChapter, 0, MSGTR_Unknown);
|
||||
|
@ -2301,18 +2301,18 @@ int run_command(MPContext * mpctx, mp_cmd_t * cmd)
|
|||
v = cmd->args[0].v.f;
|
||||
abs = (cmd->nargs > 1) ? cmd->args[1].v.i : 0;
|
||||
if (abs == 2) { /* Absolute seek to a specific timestamp in seconds */
|
||||
abs_seek_pos = SEEK_ABSOLUTE;
|
||||
mpctx->abs_seek_pos = SEEK_ABSOLUTE;
|
||||
if (sh_video)
|
||||
mpctx->osd_function =
|
||||
(v > sh_video->pts) ? OSD_FFW : OSD_REW;
|
||||
rel_seek_secs = v;
|
||||
mpctx->rel_seek_secs = v;
|
||||
} else if (abs) { /* Absolute seek by percentage */
|
||||
abs_seek_pos = SEEK_ABSOLUTE | SEEK_FACTOR;
|
||||
mpctx->abs_seek_pos = SEEK_ABSOLUTE | SEEK_FACTOR;
|
||||
if (sh_video)
|
||||
mpctx->osd_function = OSD_FFW; // Direction isn't set correctly
|
||||
rel_seek_secs = v / 100.0;
|
||||
mpctx->rel_seek_secs = v / 100.0;
|
||||
} else {
|
||||
rel_seek_secs += v;
|
||||
mpctx->rel_seek_secs += v;
|
||||
mpctx->osd_function = (v > 0) ? OSD_FFW : OSD_REW;
|
||||
}
|
||||
brk_cmd = 1;
|
||||
|
|
|
@ -74,6 +74,10 @@ typedef struct MPContext {
|
|||
// by the audio CPU usage meter.
|
||||
double delay;
|
||||
|
||||
// Used to communicate the parameters of a seek between parts
|
||||
float rel_seek_secs;
|
||||
int abs_seek_pos;
|
||||
|
||||
float begin_skip; ///< start time of the current skip while on edlout mode
|
||||
// audio is muted if either EDL or user activates mute
|
||||
short edl_muted; ///< Stores whether EDL is currently in muted mode.
|
||||
|
@ -108,8 +112,6 @@ typedef struct MPContext {
|
|||
|
||||
|
||||
// Most of these should not be globals
|
||||
extern int abs_seek_pos;
|
||||
extern float rel_seek_secs;
|
||||
extern FILE *edl_fd;
|
||||
extern int file_filter;
|
||||
// These appear in options list
|
||||
|
|
22
mplayer.c
22
mplayer.c
|
@ -234,10 +234,6 @@ static m_time_size_t end_at = { .type = END_AT_NONE, .pos = 0 };
|
|||
// A/V sync:
|
||||
int autosync=0; // 30 might be a good default value.
|
||||
|
||||
// may be changed by GUI: (FIXME!)
|
||||
float rel_seek_secs=0;
|
||||
int abs_seek_pos=0;
|
||||
|
||||
// codecs:
|
||||
char **audio_codec_list=NULL; // override audio codec
|
||||
char **video_codec_list=NULL; // override video codec
|
||||
|
@ -2359,7 +2355,7 @@ static void pause_loop(struct MPContext *mpctx)
|
|||
if (use_gui) {
|
||||
guiEventHandling();
|
||||
guiGetEvent(guiReDraw, NULL);
|
||||
if (guiIntfStruct.Playing!=2 || (rel_seek_secs || abs_seek_pos))
|
||||
if (guiIntfStruct.Playing!=2 || (mpctx->rel_seek_secs || mpctx->abs_seek_pos))
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
@ -2463,8 +2459,8 @@ static void edl_update(MPContext *mpctx)
|
|||
if (mpctx->sh_video->pts >= next_edl_record->start_sec) {
|
||||
if (next_edl_record->action == EDL_SKIP) {
|
||||
mpctx->osd_function = OSD_FFW;
|
||||
abs_seek_pos = 0;
|
||||
rel_seek_secs = next_edl_record->length_sec;
|
||||
mpctx->abs_seek_pos = 0;
|
||||
mpctx->rel_seek_secs = next_edl_record->length_sec;
|
||||
mp_msg(MSGT_CPLAYER, MSGL_DBG4, "EDL_SKIP: start [%f], stop "
|
||||
"[%f], length [%f]\n", next_edl_record->start_sec,
|
||||
next_edl_record->stop_sec, next_edl_record->length_sec);
|
||||
|
@ -3849,7 +3845,7 @@ if(auto_quality>0){
|
|||
// handle -sstep
|
||||
if(step_sec>0) {
|
||||
mpctx->osd_function=OSD_FFW;
|
||||
rel_seek_secs+=step_sec;
|
||||
mpctx->rel_seek_secs+=step_sec;
|
||||
}
|
||||
|
||||
edl_update(mpctx);
|
||||
|
@ -3878,12 +3874,12 @@ if(step_sec>0) {
|
|||
if(opts->loop_times==1) opts->loop_times=-1;
|
||||
play_n_frames=play_n_frames_mf;
|
||||
mpctx->eof=0;
|
||||
abs_seek_pos=SEEK_ABSOLUTE; rel_seek_secs=seek_to_sec;
|
||||
mpctx->abs_seek_pos=SEEK_ABSOLUTE; mpctx->rel_seek_secs=seek_to_sec;
|
||||
loop_seek = 1;
|
||||
}
|
||||
|
||||
if(rel_seek_secs || abs_seek_pos){
|
||||
if (seek(mpctx, rel_seek_secs, abs_seek_pos) >= 0) {
|
||||
if(mpctx->rel_seek_secs || mpctx->abs_seek_pos){
|
||||
if (seek(mpctx, mpctx->rel_seek_secs, mpctx->abs_seek_pos) >= 0) {
|
||||
// Set OSD:
|
||||
if(!loop_seek){
|
||||
if( !edl_decision )
|
||||
|
@ -3891,8 +3887,8 @@ if(rel_seek_secs || abs_seek_pos){
|
|||
}
|
||||
}
|
||||
|
||||
rel_seek_secs=0;
|
||||
abs_seek_pos=0;
|
||||
mpctx->rel_seek_secs=0;
|
||||
mpctx->abs_seek_pos=0;
|
||||
loop_seek=0;
|
||||
edl_decision = 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue