Move global rel_seek_secs and abs_seek_pos to mpctx

This commit is contained in:
Uoti Urpala 2008-04-21 06:17:22 +03:00
parent c1f9fe7d67
commit 3ee6503a07
3 changed files with 28 additions and 30 deletions

View File

@ -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;

View File

@ -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

View File

@ -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;
}