Mailing List archive

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

[vdr] Re: [PATCH] (DVB-T) statmux fix vbr tagging for pic header



Gregor Lawatscheck wrote:
>  >From my limited point of view, I think it would be better to set
>  >only the vbv delay without touching the rest:
>  >
>  > p[i + 5] |= 0x07;
>  > p[i + 6] |= 0xFF;
>  > p[i + 7] |= 0xF8;
>
> >IMO we should not modify the data during recording.
> >We should fix it during replay. It's a firmware bug and it should be
> >fixed in the firmware. If this is not possible it should be fixed in
> >the driver.
>
> I completely agree. I've submitted it as a patch but wouldn't like to
> see it applied to the sourcetree just yet. It was intended for
> testing. As you say it should be fixed in the firmware, if not there
> then in the driver. Only as a last resort by some sort of special
> setting in channels.conf should vdr have to deal with it.

Ok, this is an experimental driver patch to fix the problem:

--- av7110.c.org	Sat May 17 05:12:30 2003
+++ av7110.c	Sat May 17 05:19:39 2003
@@ -1116,6 +1116,8 @@ pes_play(void *dest, ring_buffer_t *buf,
         int len, split=0;
         u32 sync;
         u16 blen;
+        int i, ftype;
+        char *p;
 
         dprintk ("function : %s\n", __FUNCTION__);
         if (!dlen) {
@@ -1165,6 +1167,20 @@ pes_play(void *dest, ring_buffer_t *buf,
         
         dprintk ("function: %s pread=%08x pwrite=%08x\n", __FUNCTION__,
                 buf->pread, buf->pwrite);
+
+        p = dest;
+        for (i = 0; i < blen-8; i++) {
+                if (p[i] == 0 && p[i+1] == 0 && p[i+2] == 1 && p[i+3] == 0) {
+                        ftype = (p[i+5] >> 3) & 0x07;
+                        if (ftype) {
+                                //printk ("pic %d at %d/%d\n", ftype, i, blen);
+                                p[i+5] |= 0x07;
+                                p[i+6] |= 0xff;
+                                p[i+7] |= 0xf8;
+                        }
+                }
+        }
+
         wake_up(&buf->queue);
         return blen;
 }


Replay and transfer mode should work now. Please test!

If it works I'll ask the firmware people to check whether it can be 
fixed in the firmware.

> >This might also help with old RTL recordings that cannot be played
> > with the current firmware. I haven't had the time yet to look into
> > this issue but I'll try to do this next weekend.

Indeed, it also fixes the RTL bug. Great job, Gregor!

Oliver


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index