Re : vdr 1.7.10 no record channel

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I read the ISO / IEC 13818-2: 1995 for trying to better understand how is the detection of I-frames.
In Chapter 6.2 the header image will begin by picture_start_code
in remux.c

 if (scan == 0x00000100) (/ / Picture Start Code

If I understand the detection of the i-frame is in the picture_coding_type according to Table 6-12

picture_coding_type / coding method
000 / forbidden
001 / intra-coded (I)
010 / predictive-coded (P)
011 / bidirectionally-predictive-coded (B)
100 / Shall Not Be Used (dc intra-coded (D) in ISO/IEC11172- 2)
101 / reserved
110 / reserved
111 / reserved

I do not understand this line of code:

independentFrame = ((Data [i +2]>> 3) & 0x07) == 1 / / I-Frame

thank you for your answers

Regards

Senufo

On 05/19/10 22:20, Senufo wrote:
> Hi,
>
> Thanks Klaus
> Klaus I agree, but the video looks good because I can see this live
> stream and when I use the patch records are correct.
> I did a test with vdr 1.6.0 with the same channels.conf and there I can
> see the live stream and recordings works.
>
> Why ?

I have no idea.

Of course, the whole frame detection is different in VDR 1.7.
You might want to debug that area to see why it doesn't work
any more. Simply changing that bit from '1' to '0' can't be
the solution.

Klaus

> 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

_______________________________________________
vdr mailing list
vdr@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr


[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux