summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS2
-rw-r--r--HISTORY4
-rw-r--r--remux.c6
3 files changed, 8 insertions, 4 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 8d2496d1..ec8163ed 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -1322,6 +1322,8 @@ Reinhard Nissl <rnissl@gmx.de>
for reporting that the Transfer Mode indicator bitmap in the LCARS skin may not
fit with small font sizes
for reporting a race condition when zapping in transfer mode
+ for reporting an error in mapping the frame type bits when detecting independent
+ frames in MPEG 4 video
Richard Robson <richard_robson@beeb.net>
for reporting freezing replay if a timer starts while in Transfer Mode from the
diff --git a/HISTORY b/HISTORY
index b0e96dd0..d67c09e1 100644
--- a/HISTORY
+++ b/HISTORY
@@ -7235,7 +7235,9 @@ Video Disk Recorder Revision History
function in order to make use of this new feature. See, for instance, the function
cSkinClassicDisplayMenu::SetButtons() in skinclassic.c for details.
-2012-09-13: Version 1.7.31
+2012-09-14: Version 1.7.31
- If regenerating an index file fails and no data is written to the file, VDR now
reports this error and removes the empty index file.
+- Fixed mapping the frame type bits when detecting independent frames in MPEG 4
+ video (reported by Reinhard Nissl).
diff --git a/remux.c b/remux.c
index bd06e7ce..3698cc41 100644
--- a/remux.c
+++ b/remux.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: remux.c 2.64 2012/03/02 10:56:49 kls Exp $
+ * $Id: remux.c 2.65 2012/09/14 09:06:14 kls Exp $
*/
#include "remux.h"
@@ -974,8 +974,8 @@ int cFrameDetector::Analyze(const uchar *Data, int Length)
if (FrameTypeOffset >= TS_SIZE) // the byte to check is in the next TS packet
i = SkipPackets(Data, Length, Processed, FrameTypeOffset);
newFrame = true;
- uchar FrameType = Data[FrameTypeOffset];
- independentFrame = FrameType == 0x10;
+ uchar FrameType = Data[FrameTypeOffset] & 0xE0;
+ independentFrame = FrameType == 0x00;
if (synced) {
if (framesPerPayloadUnit < 0) {
payloadUnitOfFrame = (payloadUnitOfFrame + 1) % -framesPerPayloadUnit;