From 999df31b8d27006dc81a7ef8d3ed309aa9172f4c Mon Sep 17 00:00:00 2001 From: Klaus Schmidinger Date: Sun, 1 Nov 2009 15:35:34 +0100 Subject: [PATCH] Fixed writing the PCR pid into the PMT in cPatPmtGenerator::GeneratePmt() --- CONTRIBUTORS | 4 ++++ HISTORY | 2 ++ remux.c | 7 ++++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTORS b/CONTRIBUTORS index f9a3f16a..aae701bf 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -2500,3 +2500,7 @@ Valdemaras Pipiras Manuel Reimer for fixing saving terminal settings when running in background + +Rene van den Braken + for reporting a bug in writing the PCR pid into the PMT in + cPatPmtGenerator::GeneratePmt() diff --git a/HISTORY b/HISTORY index 1662a6f3..b05d9112 100644 --- a/HISTORY +++ b/HISTORY @@ -6174,3 +6174,5 @@ Video Disk Recorder Revision History Reimer). - Fixed cFrameDetector::Analyze() to handle video streams where the frame type is not detectable from the first TS packet of a frame. +- Fixed writing the PCR pid into the PMT in cPatPmtGenerator::GeneratePmt() + (reported by Rene van den Braken). diff --git a/remux.c b/remux.c index 443e79ec..98f404f2 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.27 2009/11/01 12:25:17 kls Exp $ + * $Id: remux.c 2.28 2009/11/01 15:33:32 kls Exp $ */ #include "remux.h" @@ -295,6 +295,7 @@ void cPatPmtGenerator::GeneratePmt(cChannel *Channel) numPmtPackets = 0; if (Channel) { int Vpid = Channel->Vpid(); + int Ppid = Channel->Ppid(); uchar *p = buf; int i = 0; p[i++] = 0x02; // table id @@ -306,8 +307,8 @@ void cPatPmtGenerator::GeneratePmt(cChannel *Channel) p[i++] = 0xC1 | (pmtVersion << 1); // dummy (2), version number (5), current/next indicator (1) p[i++] = 0x00; // section number p[i++] = 0x00; // last section number - p[i++] = 0xE0 | (Vpid >> 8); // dummy (3), PCR pid hi (5) - p[i++] = Vpid; // PCR pid lo + p[i++] = 0xE0 | (Ppid >> 8); // dummy (3), PCR pid hi (5) + p[i++] = Ppid; // PCR pid lo p[i++] = 0xF0; // dummy (4), program info length hi (4) p[i++] = 0x00; // program info length lo