# HG changeset patch # User arpi # Date 1033858818 0 # Node ID c3bbe602aff3caa262193aef36eaaff0352af533 # Parent 32efb806436ef23689eef111773db8bd34fc47ed new option -speed, to set playback speed rate (examples: -speed 1:3 or -speed 5) it replaces old -srate behaviour ofor mplayer diff -r 32efb806436e -r c3bbe602aff3 cfg-mplayer.h --- a/cfg-mplayer.h Sat Oct 05 22:55:45 2002 +0000 +++ b/cfg-mplayer.h Sat Oct 05 23:00:18 2002 +0000 @@ -310,6 +310,8 @@ // set a-v distance, should be moved to -common and support in mencoder {"delay", &audio_delay, CONF_TYPE_FLOAT, CONF_RANGE, -100.0, 100.0, NULL}, + {"speed", &playback_speed, CONF_TYPE_FLOAT, CONF_RANGE, 0.01, 100.0, NULL}, + {"framedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 0, 1, NULL}, {"hardframedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 0, 2, NULL}, {"noframedrop", &frame_dropping, CONF_TYPE_FLAG, 0, 1, 0, NULL}, diff -r 32efb806436e -r c3bbe602aff3 mplayer.c --- a/mplayer.c Sat Oct 05 22:55:45 2002 +0000 +++ b/mplayer.c Sat Oct 05 23:00:18 2002 +0000 @@ -152,6 +152,8 @@ int auto_quality=0; static int output_quality=0; +float playback_speed=1.0; + int use_gui=0; int osd_level=1; @@ -1236,7 +1238,7 @@ current_module="ao2_init"; if(!(audio_out=init_best_audio_out(audio_driver_list, (ao_plugin_cfg.plugin_list), // plugin flag - force_srate?force_srate:sh_audio->samplerate, + force_srate?force_srate:sh_audio->samplerate*playback_speed, audio_output_channels?audio_output_channels: sh_audio->channels,sh_audio->sample_format,0))){ // FAILED: @@ -1247,7 +1249,7 @@ inited_flags|=INITED_AO; mp_msg(MSGT_CPLAYER,MSGL_INFO,"AO: [%s] %dHz %dch %s\n", audio_out->info->short_name, - force_srate?force_srate:sh_audio->samplerate, + force_srate?force_srate:((int)(sh_audio->samplerate*playback_speed)), sh_audio->channels, audio_out_format_name(sh_audio->sample_format)); mp_msg(MSGT_CPLAYER,MSGL_V,MSGTR_AODescription_AOAuthor, @@ -1258,7 +1260,7 @@ #if 1 current_module="af_init"; if(!init_audio_filters(sh_audio, - sh_audio->samplerate, + (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, */ @@ -1369,7 +1371,7 @@ if(playsize>0){ sh_audio->a_out_buffer_len-=playsize; memmove(sh_audio->a_out_buffer,&sh_audio->a_out_buffer[playsize],sh_audio->a_out_buffer_len); - sh_audio->timer+=playsize/((float)((ao_data.bps && sh_audio->afilter) ? + sh_audio->timer+=playback_speed*playsize/((float)((ao_data.bps && sh_audio->afilter) ? ao_data.bps : sh_audio->o_bps)); } @@ -1410,7 +1412,7 @@ // check for frame-drop: current_module="check_framedrop"; if(sh_audio && !d_audio->eof){ - float delay=audio_out->get_delay(); + float delay=playback_speed*audio_out->get_delay(); float d=(sh_video->timer)-(sh_audio->timer-delay); // we should avoid dropping to many frames in sequence unless we // are too late. and we allow 100ms A-V delay here: @@ -1484,7 +1486,7 @@ time_frame-=GetRelativeTime(); // reset timer if(sh_audio && !d_audio->eof){ - float delay=audio_out->get_delay(); + float delay=playback_speed*audio_out->get_delay(); mp_dbg(MSGT_AVSYNC,MSGL_DBG2,"delay=%f\n",delay); if (autosync){ @@ -1603,7 +1605,7 @@ float v_pts=0; // unplayed bytes in our and soundcard/dma buffer: - float delay=audio_out->get_delay()+(float)sh_audio->a_buffer_len/(float)sh_audio->o_bps; + float delay=playback_speed*audio_out->get_delay()+(float)sh_audio->a_buffer_len/(float)sh_audio->o_bps; if (autosync){ /* @@ -1665,9 +1667,9 @@ if(!quiet) mp_msg(MSGT_AVSYNC,MSGL_STATUS,"A:%6.1f V:%6.1f A-V:%7.3f ct:%7.3f %3d/%3d %2d%% %2d%% %4.1f%% %d %d %d%%\r", a_pts-audio_delay-delay,v_pts,AV_delay,c_total, (int)sh_video->num_frames,(int)sh_video->num_frames_decoded, - (sh_video->timer>0.5)?(int)(100.0*video_time_usage/(double)sh_video->timer):0, - (sh_video->timer>0.5)?(int)(100.0*vout_time_usage/(double)sh_video->timer):0, - (sh_video->timer>0.5)?(100.0*audio_time_usage/(double)sh_video->timer):0 + (sh_video->timer>0.5)?(int)(100.0*video_time_usage*playback_speed/(double)sh_video->timer):0, + (sh_video->timer>0.5)?(int)(100.0*vout_time_usage*playback_speed/(double)sh_video->timer):0, + (sh_video->timer>0.5)?(100.0*audio_time_usage*playback_speed/(double)sh_video->timer):0 ,drop_frame_cnt ,output_quality ,cache_fill_status