diff -crN MPlayer-0.92.orig/etc/input.conf MPlayer-0.92/etc/input.conf *** MPlayer-0.92.orig/etc/input.conf Mon Dec 8 10:12:33 2003 --- MPlayer-0.92/etc/input.conf Fri Dec 26 11:23:26 2003 *************** *** 7,12 **** --- 7,17 ---- ## 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 *************** *** 53,59 **** h tv_step_channel 1 l tv_step_channel -1 n tv_step_norm ! b tv_step_chanlist ## ## GUI --- 58,64 ---- h tv_step_channel 1 l tv_step_channel -1 n tv_step_norm ! #b tv_step_chanlist ## ## GUI diff -crN MPlayer-0.92.orig/input/input.c MPlayer-0.92/input/input.c *** MPlayer-0.92.orig/input/input.c Mon Dec 8 10:12:31 2003 --- MPlayer-0.92/input/input.c Fri Dec 26 10:04:28 2003 *************** *** 50,56 **** --- 50,59 ---- { 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}} } }, diff -crN MPlayer-0.92.orig/input/input.h MPlayer-0.92/input/input.h *** MPlayer-0.92.orig/input/input.h Mon Dec 8 10:12:31 2003 --- MPlayer-0.92/input/input.h Fri Dec 26 10:03:27 2003 *************** *** 42,47 **** --- 42,50 ---- #endif #define MP_CMD_SUB_ALIGNMENT 39 #define MP_CMD_TV_LAST_CHANNEL 40 + #define MP_CMD_SET_SPEED 41 + #define MP_CMD_SET_MEMORY 42 + #define MP_CMD_SEEK_MEMORY 43 #define MP_CMD_GUI_EVENTS 5000 #define MP_CMD_GUI_LOADFILE 5001 diff -crN MPlayer-0.92.orig/mplayer.c MPlayer-0.92/mplayer.c *** MPlayer-0.92.orig/mplayer.c Mon Dec 8 10:12:47 2003 --- MPlayer-0.92/mplayer.c Fri Dec 26 11:10:13 2003 *************** *** 178,183 **** --- 178,184 ---- static int output_quality=0; float playback_speed=1.0; + float memory_point=0.0; int use_gui=0; *************** *** 646,651 **** --- 647,653 ---- int osd_function=OSD_PLAY; int osd_last_pts=-303; int osd_show_av_delay = 0; + int osd_show_speed = 0; int osd_show_sub_delay = 0; int osd_show_sub_pos = 0; int osd_show_sub_visibility = 0; *************** *** 2327,2332 **** --- 2329,2359 ---- 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; } break; *************** *** 3188,3193 **** --- 3215,3224 ---- if (osd_show_av_delay) { snprintf(osd_text_tmp, 63, "A-V delay: %d ms", ROUND(audio_delay*1000)); osd_show_av_delay--; + } else + if (osd_show_speed) { + snprintf(osd_text_tmp, 63, "Speed %.2f", playback_speed); + osd_show_speed--; } else if(osd_level>=2) { int len = demuxer_get_time_length(demuxer); int percentage = -1;