Hi,
I found the problem. VDR does not detect the frame independent in this stream because in the function :
cFrameDetector:: Analyze (const uchar * Data, int Length)
in the file remux.c.
((Data [i +2]>> 3) & 0x07) is equal to 0 instead of 1 for stream that work.
I applied this patch :
--- remux.c 2010-05-04 14:55:50.000000000 +0200 +++ remux.c.orig 2010-05-04 21:57:38.000000000 +0200 @@ -960,6 +960,7 @@ return Processed; // flush everything before this new frame newFrame = true; independentFrame = ((Data[i + 2] >> 3) & 0x07) == 1; // I-Frame + if (((Data[i + 2] >> 3) & 0x07) == 0) { independentFrame = 1;} if (synced) { if (framesPerPayloadUnit <= 1) scanning = false;
and record is working again. I do not know what has changed in the stream.
I tested this patch since yesterday and so far I have not had any problems.
What do you think?
Senufo
On 05.05.2010 22:11, Senufo wrote:
Hi,
I found the problem. VDR does not detect the frame independent in this stream because in the function :
cFrameDetector:: Analyze (const uchar * Data, int Length)
in the file remux.c.
((Data [i +2]>> 3) & 0x07) is equal to 0 instead of 1 for stream that work.
I applied this patch :
--- remux.c 2010-05-04 14:55:50.000000000 +0200 +++ remux.c.orig 2010-05-04 21:57:38.000000000 +0200 @@ -960,6 +960,7 @@ return Processed; // flush everything before this new frame newFrame = true; independentFrame = ((Data[i + 2] >> 3) & 0x07) == 1; // I-Frame
if (((Data[i + 2] >> 3) & 0x07) == 0) { independentFrame = 1;} if (synced) { if (framesPerPayloadUnit <= 1) scanning = false;
and record is working again. I do not know what has changed in the stream.
I tested this patch since yesterday and so far I have not had any problems.
What do you think?
If this stream marks independent frames with '0' instead if '1', I would say it is broken.
Klaus