I did some research how this is solved in the GraphLCD plugin and came up with this solution:
Index: vdr-plugin-lcdproc-0.0.10-jw9+git20120625/lcd.c
===================================================================
--- vdr-plugin-lcdproc-0.0.10-jw9+git20120625.orig/lcd.c 2013-01-14 11:08:40.378878002 0100
++ vdr-plugin-lcdproc-0.0.10-jw9+git20120625/lcd.c 2013-01-14 11:10:47.573278952 +0100
@ -923,9 +923,11
@
if ( (now.tv_usec < WakeUpCycle) && (replayDvbApi) ) {
char tempbuffer[16];
- replayDvbApi->GetIndex(Current, Total, false); Total=(Total==0)?1:Total;
- sprintf(tempbuffer,"%s",(const char*)IndexToHMSF(Total));
- SetProgress(IndexToHMSF(Current),tempbuffer, (100 * Current) / Total);
+ replayDvbApi->GetIndex(Current, Total, false);
+ Total= (Total==0) ? 1 : Total;
+ double FramesPerSecond = replayDvbApi->FramesPerSecond();
+ sprintf(tempbuffer, "%s", (const char*)IndexToHMSF(Total, false, FramesPerSecond));
+ SetProgress(IndexToHMSF(Current, false, FramesPerSecond), tempbuffer, (100 * Current) / Total);
}