Fixed cFrameDetector::Analyze() in case part of the data has been processed and there is less than MIN_TS_PACKETS_FOR_FRAME_DETECTOR left

This commit is contained in:
Klaus Schmidinger 2010-04-05 09:38:13 +02:00
parent 1bf0c3d23a
commit db5c3cd36a
3 changed files with 7 additions and 4 deletions

View File

@ -2525,6 +2525,7 @@ Derek Kelly (user.vdr@gmail.com)
for reporting a problem with HD NTSC broadcasts that split frames over several payload
units
for updating sources.conf
for reporting a problem where the frame rate was not detected correctly
Marcel Unbehaun <frostworks@gmx.de>
for adding cRecordingInfo::GetEvent()

View File

@ -6411,7 +6411,7 @@ Video Disk Recorder Revision History
- The new setup option "Folders in timer menu" controls whether the file names in
the timer menu are shown with their full folder path.
2010-04-04: Version 1.7.15
2010-04-05: Version 1.7.15
- Added Macedonian language texts (thanks to Dimitar Petrovski).
- Updated the Estonian OSD texts (thanks to Arthur Konovalov).
@ -6422,3 +6422,5 @@ Video Disk Recorder Revision History
- Updated the Italian OSD texts (thanks to Diego Pierotto).
- cDvbDevice::ProvidesTransponder() now checks the modulation capabilities of the
device (as far as the driver allows this).
- Fixed cFrameDetector::Analyze() in case part of the data has been processed and
there is less than MIN_TS_PACKETS_FOR_FRAME_DETECTOR left (reported by Derek Kelly).

View File

@ -1,10 +1,10 @@
/*
* remux.h: Tools for detecting frames and handling PAT/PMT
* remux.c: Tools for detecting frames and handling PAT/PMT
*
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
* $Id: remux.c 2.42 2010/02/28 14:42:07 kls Exp $
* $Id: remux.c 2.43 2010/04/05 09:32:57 kls Exp $
*/
#include "remux.h"
@ -817,7 +817,7 @@ int cFrameDetector::Analyze(const uchar *Data, int Length)
if (synced && Processed)
return Processed;
if (Length < MIN_TS_PACKETS_FOR_FRAME_DETECTOR * TS_SIZE)
return 0; // need more data, in case the frame type is not stored in the first TS packet
return Processed; // need more data, in case the frame type is not stored in the first TS packet
if (!frameDuration) {
// frame duration unknown, so collect a sequence of PTS values:
if (numPtsValues < MaxPtsValues && numIFrames < 2) { // collect a sequence containing at least two I-frames