--- old/mplayer.c Thu May 9 10:59:07 2002 +++ mplayer.c Fri May 24 08:28:20 2002 @@ -2857,9 +2861,23 @@ if (osd_show_av_delay) { sprintf(osd_text_tmp, "A-V delay: %d ms",(int)(audio_delay*1000)); osd_show_av_delay--; - } else if(osd_level>=2) - sprintf(osd_text_tmp,"%c %02d:%02d:%02d",osd_function,pts/3600,(pts/60)%60,pts%60); - else osd_text_tmp[0]=0; + } else if(osd_level>=2) { + int len=(demuxer->movi_end-demuxer->movi_start)>>8; + int pos=((demuxer->file_format==DEMUXER_TYPE_AVI)?demuxer->filepos:d_video->pos)>>8; + char perc_text_tmp[50]; + if (len) { + sprintf(perc_text_tmp, " - %d%%", pos*100/len); + } else { + sprintf(perc_text_tmp, ""); + } + if (demuxer->file_format == DEMUXER_TYPE_AVI) { + int len=sh_video->video.dwLength/sh_video->fps; + sprintf(osd_text_tmp,"%c %02d:%02d:%02d|%02d:%02d:%02d%s",osd_function,pts/3600,(pts/60)%60,pts%60, + len/3600,(len/60)%60,len%60,perc_text_tmp); + } else { + sprintf(osd_text_tmp,"%c %02d:%02d:%02d%s",osd_function,pts/3600,(pts/60)%60,pts%60,perc_text_tmp); + } + } else osd_text_tmp[0]=0; if(strcmp(vo_osd_text, osd_text_tmp)) { strcpy(vo_osd_text, osd_text_tmp);