Index: mplayer.c =================================================================== --- mplayer.c (revision 32037) +++ mplayer.c (working copy) @@ -142,7 +142,7 @@ int quiet=0; int enable_mouse_movements=0; float start_volume = -1; - +double start_pts = MP_NOPTS_VALUE; char *heartbeat_cmd; #define ROUND(x) ((int)((x)<0 ? (x)-0.5 : (x)+0.5)) @@ -339,6 +339,7 @@ // (next seek, pause,...), otherwise after the seek it will // enter the same scene again and skip forward immediately float edl_backward_delay = 2; +int edl_adjust_pts = 0; // Automatically add/sub start_pts int use_filedir_conf; int use_filename_title; @@ -555,7 +556,6 @@ static void print_file_properties(const MPContext *mpctx, const char *filename) { - double start_pts = MP_NOPTS_VALUE; double video_start_pts = MP_NOPTS_VALUE; mp_msg(MSGT_IDENTIFY,MSGL_INFO,"ID_FILENAME=%s\n", filename_recode(filename)); @@ -3631,6 +3631,16 @@ } print_file_properties(mpctx, filename); + + // Adjust EDL positions with start_pts + if (edl_adjust_pts && start_pts) { + edl_record_ptr edl = edl_records; + while (edl) { + edl->start_sec += start_pts; + edl->stop_sec += start_pts; + edl = edl->next; + } + } if(!mpctx->sh_video) goto main; // audio-only Index: cfg-mplayer.h =================================================================== --- cfg-mplayer.h (revision 32037) +++ cfg-mplayer.h (working copy) @@ -103,6 +103,8 @@ CONF_TYPE_PRINT, 0, 0, 0, NULL}, {"edlout", &edl_output_filename, CONF_TYPE_STRING, 0, 0, 0, NULL}, {"edl-backward-delay", &edl_backward_delay, CONF_TYPE_INT, CONF_MIN, 0, 0, NULL}, + {"edl-adjust-pts", &edl_adjust_pts, CONF_TYPE_FLAG, 0, 0, 1, NULL}, + {"noedl-adjust-pts", &edl_adjust_pts, CONF_TYPE_FLAG, 0, 1, 0, NULL}, #ifdef CONFIG_X11 {"display", &mDisplayName, CONF_TYPE_STRING, 0, 0, 0, NULL}, Index: command.c =================================================================== --- command.c (revision 32037) +++ command.c (working copy) @@ -70,6 +70,8 @@ #define ROUND(x) ((int)((x)<0 ? (x)-0.5 : (x)+0.5)) extern int use_menu; +extern int edl_adjust_pts; +extern double start_pts; static void rescale_input_coordinates(int ix, int iy, double *dx, double *dy) { @@ -2614,7 +2616,8 @@ if (mpctx->begin_skip > v) mp_msg(MSGT_CPLAYER, MSGL_WARN, MSGTR_EdloutBadStop); else { - fprintf(edl_fd, "%f %f %d\n", mpctx->begin_skip, v, 0); + float pts = edl_adjust_pts ? start_pts : 0; + fprintf(edl_fd, "%f %f %d\n", mpctx->begin_skip - pts, v - pts, 0); mp_msg(MSGT_CPLAYER, MSGL_INFO, MSGTR_EdloutEndSkip); } mpctx->begin_skip = MP_NOPTS_VALUE;