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

Fixed determining the frame duration on channels where the PTS deltas jitter by +/-1 around 3600

This commit is contained in:
Klaus Schmidinger 2010-01-24 16:14:13 +01:00
parent 9ff0e7ef27
commit a9543347af
2 changed files with 6 additions and 2 deletions

View File

@ -6300,3 +6300,5 @@ Video Disk Recorder Revision History
in most cases is the same as the video pid. For channels that use a separate in most cases is the same as the video pid. For channels that use a separate
PCR pid, no TS packets are recorded from that PID (I have yet to see a case where PCR pid, no TS packets are recorded from that PID (I have yet to see a case where
this actually is a problem). this actually is a problem).
- Fixed determining the frame duration on channels where the PTS deltas jitter by
+/-1 around 3600.

View File

@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and * See the main source file 'vdr.c' for copyright information and
* how to reach the author. * how to reach the author.
* *
* $Id: remux.c 2.39 2010/01/24 15:18:29 kls Exp $ * $Id: remux.c 2.40 2010/01/24 16:13:12 kls Exp $
*/ */
#include "remux.h" #include "remux.h"
@ -842,7 +842,9 @@ int cFrameDetector::Analyze(const uchar *Data, int Length)
// determine frame info: // determine frame info:
if (isVideo) { if (isVideo) {
if (Delta % 3600 == 0) if (Delta % 3600 == 0)
frameDuration = 3600; // PAL, 25 fps frameDuration = 3600; // PAL, 25 fps, exact timing
else if (abs(Delta % 3600) == 3599 || abs(Delta % 3600) == 1)
frameDuration = 3600; // PAL, 25 fps, timing with jitter
else if (Delta % 3003 == 0) else if (Delta % 3003 == 0)
frameDuration = 3003; // NTSC, 29.97 fps frameDuration = 3003; // NTSC, 29.97 fps
else if (abs(Delta - 1800) <= 1) { else if (abs(Delta - 1800) <= 1) {