vdr-1.7.1 video stream format
Commit Message
On Mon, 24 Nov 2008 14:41:44 +0100, Stefan Lucke wrote
> - dumping the data I got via PlayVideo() to a file neither ffplay nor
> mplayer can identify stream info from dumped data.
Unless I've overlooked some section repacker somewhere, there's a bug in
cPatPmtGenerator. I've already sent the attached patch to Klaus, but he didn't
have time to look at it yet.
Frank
Comments
On Monday 24 November 2008, Frank Schmirler wrote:
> On Mon, 24 Nov 2008 14:41:44 +0100, Stefan Lucke wrote
> > - dumping the data I got via PlayVideo() to a file neither ffplay nor
> > mplayer can identify stream info from dumped data.
>
> Unless I've overlooked some section repacker somewhere, there's a bug in
> cPatPmtGenerator. I've already sent the attached patch to Klaus, but he didn't
> have time to look at it yet.
Thanks,
but things went worse with that on my system:
audio disappeared and nothing more to dump in PlayVideo() :-( .
@@ -2298,6 +2298,7 @@
p[i++] = 0x40; // flags (3), pid hi (5)
p[i++] = 0x00; // pid lo
p[i++] = 0x10; // flags (4), continuity counter (4)
+ p[i++] = 0x00; // pointer field (payload unit start indicator is set)
int PayloadStart = i;
p[i++] = 0x00; // table id
p[i++] = 0xB0; // section syntax indicator (1), dummy (3), section length hi (4)
@@ -2367,13 +2368,18 @@
MakeCRC(buf + i, buf, i);
// split the PMT section into several TS packets:
uchar *q = buf;
+ bool pusi = true;
while (i > 0) {
uchar *p = pmt[numPmtPackets++];
int j = 0;
p[j++] = 0x47; // TS indicator
- p[j++] = 0x40 | (P_PNR >> 8); // flags (3), pid hi (5)
+ p[j++] = (pusi ? 0x40 : 0) | (P_PNR >> 8); // flags (3), pid hi (5)
p[j++] = P_PNR & 0xFF; // pid lo
p[j++] = 0x10; // flags (4), continuity counter (4)
+ if (pusi) {
+ p[j++] = 0x00; // pointer field (payload unit start indicator is set)
+ pusi = false;
+ }
int l = TS_SIZE - j;
memcpy(p + j, q, l);
q += l;