Index: mplayer.c =================================================================== RCS file: /cvsroot/mplayer/main/mplayer.c,v retrieving revision 1.741 diff -u -r1.741 mplayer.c --- mplayer.c 8 Dec 2003 21:33:31 -0000 1.741 +++ mplayer.c 26 Dec 2003 09:16:11 -0000 @@ -201,6 +201,7 @@ static int output_quality=0; float playback_speed=1.0; +float memory_point=0.0; int use_gui=0; @@ -726,6 +727,7 @@ int osd_function=OSD_PLAY; int osd_last_pts=-303; int osd_show_av_delay = 0; +int osd_show_speed = 0; int osd_show_text = 0; int osd_show_sub_delay = 0; int osd_show_sub_pos = 0; @@ -2531,6 +2533,31 @@ osd_show_av_delay = 9; if(sh_audio) sh_audio->delay+= v; } break; + case MP_CMD_SET_SPEED : { + float v = cmd->args[0].v.f; + if (playback_speed + v > 0) { + playback_speed += v; + if(sh_audio && !init_audio_filters(sh_audio, + (int)(sh_audio->samplerate*playback_speed), + sh_audio->channels, sh_audio->sample_format, sh_audio->samplesize, + ao_data.samplerate, ao_data.channels, ao_data.format, + audio_out_format_bits(ao_data.format)/8, /* ao_data.bps, */ + ao_data.outburst*4, ao_data.buffersize)){ + mp_msg(MSGT_CPLAYER,MSGL_ERR,"Couldn't find matching filter / ao format!\n"); + } + } + osd_show_speed = 24; + if(sh_audio) sh_audio->delay+= v; + } break; + case MP_CMD_SET_MEMORY: { + memory_point = demuxer->video->pts; + } break; + case MP_CMD_SEEK_MEMORY: { + abs_seek_pos = 1; + if(sh_video) + osd_function= (memory_point > sh_video->timer) ? OSD_FFW : OSD_REW; + rel_seek_secs = memory_point; + } break; case MP_CMD_PAUSE : { osd_function=OSD_PAUSE; brk_cmd = 1; @@ -3550,6 +3577,10 @@ (sub_alignment == 1 ? "center" : "top"))); osd_show_sub_alignment--; } else + if (osd_show_speed) { + snprintf(osd_text_tmp, 63, "Speed %.2f", playback_speed); + osd_show_speed--; + } else if (osd_show_av_delay) { snprintf(osd_text_tmp, 63, "A-V delay: %d ms", ROUND(audio_delay*1000)); osd_show_av_delay--; Index: etc/input.conf =================================================================== RCS file: /cvsroot/mplayer/main/etc/input.conf,v retrieving revision 1.11 diff -u -r1.11 input.conf --- etc/input.conf 30 Nov 2003 16:36:05 -0000 1.11 +++ etc/input.conf 26 Dec 2003 09:16:11 -0000 @@ -7,6 +7,11 @@ ## The file should be placed in the $HOME/.mplayer directory. ## +a speed -0.25 +s speed 0.25 +m set_memory +b seek_memory + RIGHT seek +10 LEFT seek -10 DOWN seek -60 @@ -54,7 +59,7 @@ h tv_step_channel 1 l tv_step_channel -1 n tv_step_norm -b tv_step_chanlist +#b tv_step_chanlist ## ## GUI Index: input/input.c =================================================================== RCS file: /cvsroot/mplayer/main/input/input.c,v retrieving revision 1.87 diff -u -r1.87 input.c --- input/input.c 30 Nov 2003 16:36:07 -0000 1.87 +++ input/input.c 26 Dec 2003 09:16:12 -0000 @@ -55,7 +55,10 @@ { MP_CMD_EDL_MARK, "edl_mark", 0, { {-1,{0}} } }, #endif { MP_CMD_AUDIO_DELAY, "audio_delay", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, + { MP_CMD_SET_SPEED, "speed", 1, { {MP_CMD_ARG_FLOAT,{0}}, {-1,{0}} } }, { MP_CMD_QUIT, "quit", 0, { {-1,{0}} } }, + { MP_CMD_SET_MEMORY, "set_memory", 0, { {-1,{0}} } }, + { MP_CMD_SEEK_MEMORY, "seek_memory", 0, { {-1,{0}} } }, { MP_CMD_PAUSE, "pause", 0, { {-1,{0}} } }, { MP_CMD_GRAB_FRAMES, "grab_frames",0, { {-1,{0}} } }, { MP_CMD_PLAY_TREE_STEP, "pt_step",1, { { MP_CMD_ARG_INT ,{0}}, { MP_CMD_ARG_INT ,{0}}, {-1,{0}} } }, Index: input/input.h =================================================================== RCS file: /cvsroot/mplayer/main/input/input.h,v retrieving revision 1.41 diff -u -r1.41 input.h --- input/input.h 24 Dec 2003 22:00:50 -0000 1.41 +++ input/input.h 26 Dec 2003 09:16:12 -0000 @@ -53,6 +53,9 @@ #define MP_CMD_GET_SUB_VISIBILITY 49 #define MP_CMD_SUB_FORCED_ONLY 50 #define MP_CMD_VO_ONTOP 51 +#define MP_CMD_SET_SPEED 52 +#define MP_CMD_SET_MEMORY 53 +#define MP_CMD_SEEK_MEMORY 54 #define MP_CMD_GUI_EVENTS 5000 #define MP_CMD_GUI_LOADFILE 5001