mirror of
https://github.com/vdr-projects/vdr.git
synced 2025-03-01 10:50:46 +00:00
Fixed error checking when regenerating the index
This commit is contained in:
parent
4805af7915
commit
c590444b7d
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: recording.c 5.34 2024/09/19 20:21:58 kls Exp $
|
||||
* $Id: recording.c 5.35 2024/09/21 19:18:18 kls Exp $
|
||||
*/
|
||||
|
||||
#include "recording.h"
|
||||
@ -2616,7 +2616,7 @@ void cIndexFileGenerator::Action(void)
|
||||
}
|
||||
else if (PatPmtParser.Completed()) {
|
||||
// Step 2 - sync FrameDetector:
|
||||
int Processed = FrameDetector.Analyze(Data, Length);
|
||||
int Processed = FrameDetector.Analyze(Data, Length, false);
|
||||
if (Processed > 0) {
|
||||
if (FrameDetector.Synced()) {
|
||||
// Synced FrameDetector, so rewind for actual processing:
|
||||
|
9
remux.c
9
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 5.12 2024/09/20 14:21:39 kls Exp $
|
||||
* $Id: remux.c 5.13 2024/09/21 19:18:18 kls Exp $
|
||||
*/
|
||||
|
||||
#include "remux.h"
|
||||
@ -2164,7 +2164,7 @@ bool cFrameDetector::NewFrame(int *PreviousErrors, int * MissingFrames)
|
||||
return newFrame;
|
||||
}
|
||||
|
||||
int cFrameDetector::Analyze(const uchar *Data, int Length)
|
||||
int cFrameDetector::Analyze(const uchar *Data, int Length, bool ErrorCheck)
|
||||
{
|
||||
if (!parser)
|
||||
return 0;
|
||||
@ -2196,7 +2196,8 @@ int cFrameDetector::Analyze(const uchar *Data, int Length)
|
||||
independentFrame = parser->IndependentFrame();
|
||||
firstIframeSeen |= independentFrame;
|
||||
if (synced) {
|
||||
frameChecker->CheckFrame(Data, n, independentFrame);
|
||||
if (ErrorCheck)
|
||||
frameChecker->CheckFrame(Data, n, independentFrame);
|
||||
if (framesPerPayloadUnit <= 1)
|
||||
scanning = false;
|
||||
}
|
||||
@ -2281,7 +2282,7 @@ int cFrameDetector::Analyze(const uchar *Data, int Length)
|
||||
else if (Pid == PATPID && synced && Processed)
|
||||
return Processed; // allow the caller to see any PAT packets
|
||||
}
|
||||
if (firstIframeSeen)
|
||||
if (firstIframeSeen && ErrorCheck)
|
||||
frameChecker->CheckTs(Data, Handled);
|
||||
Data += Handled;
|
||||
Length -= Handled;
|
||||
|
7
remux.h
7
remux.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: remux.h 5.6 2024/09/18 09:23:07 kls Exp $
|
||||
* $Id: remux.h 5.7 2024/09/21 19:18:18 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __REMUX_H
|
||||
@ -559,12 +559,15 @@ public:
|
||||
///< Sets the Pid and stream Type to detect frames for.
|
||||
void SetMissing(void);
|
||||
///< Call if this is a resumed recording, which has missing frames.
|
||||
int Analyze(const uchar *Data, int Length);
|
||||
int Analyze(const uchar *Data, int Length, bool ErrorCheck = true);
|
||||
///< Analyzes the TS packets pointed to by Data. Length is the number of
|
||||
///< bytes Data points to, and must be a multiple of TS_SIZE.
|
||||
///< Returns the number of bytes that have been analyzed.
|
||||
///< If the return value is 0, the data was not sufficient for analyzing and
|
||||
///< Analyze() needs to be called again with more actual data.
|
||||
///< Error checks can be turned off by setting ErrorCheck to false. This is
|
||||
///< used when regenerating the index file, where the first chunk of data
|
||||
///< is scanned for the PAT/PMT and then a rewind is done on the file.
|
||||
bool Synced(void) { return synced; }
|
||||
///< Returns true if the frame detector has synced on the data stream.
|
||||
bool NewFrame(int *PreviousErrors = NULL, int * MissingFrames = NULL);
|
||||
|
Loading…
x
Reference in New Issue
Block a user