1
0
mirror of https://github.com/VDR4Arch/vdr.git synced 2023-10-10 13:36:52 +02:00

Fixed numbering frames

This commit is contained in:
Klaus Schmidinger 2014-02-06 11:04:03 +01:00
parent 719b46b305
commit 7d6c54d63a
2 changed files with 10 additions and 5 deletions

View File

@ -7870,7 +7870,7 @@ Video Disk Recorder Revision History
and also to use the correct directory with --edit (the latter reported by Marko
Mäkelä).
2014-02-04: Version 2.0.6
2014-02-06: Version 2.0.6
- Updated 'sources.conf' (thanks to Antti Hartikainen).
- cFont::CreateFont() now returns a dummy font in case there are no fonts installed.
@ -7889,3 +7889,8 @@ Video Disk Recorder Revision History
directories" is set to "no".
- Fixed clearing non-editable members in the channel editor (thanks to Rolf Ahrenberg).
- Fixed flickering if subtitles are active while the OSD demo is running.
- Fixed numbering frames. Previously they were numbered starting from 1, while it
is apparently standard to number them from 0. Any existing recordings with editing
marks (which will now be off by one) can still be cut with all VDR versions from
1.7.32, because these will automatically adjust editing marks to I-frames.
Users of stable releases shouldn't notice any problems.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: recording.c 2.91.1.4 2014/01/29 10:50:28 kls Exp $
* $Id: recording.c 2.91.1.5 2014/02/06 11:04:03 kls Exp $
*/
#include "recording.h"
@ -2394,7 +2394,7 @@ cString IndexToHMSF(int Index, bool WithFrame, double FramesPerSecond)
Sign = "-";
}
double Seconds;
int f = int(modf((Index + 0.5) / FramesPerSecond, &Seconds) * FramesPerSecond + 1);
int f = int(modf((Index + 0.5) / FramesPerSecond, &Seconds) * FramesPerSecond);
int s = int(Seconds);
int m = s / 60 % 60;
int h = s / 3600;
@ -2407,9 +2407,9 @@ int HMSFToIndex(const char *HMSF, double FramesPerSecond)
int h, m, s, f = 1;
int n = sscanf(HMSF, "%d:%d:%d.%d", &h, &m, &s, &f);
if (n == 1)
return h - 1; // plain frame number
return h; // plain frame number
if (n >= 3)
return int(round((h * 3600 + m * 60 + s) * FramesPerSecond)) + f - 1;
return int(round((h * 3600 + m * 60 + s) * FramesPerSecond)) + f;
return 0;
}