Mailing List archive

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

[linux-dvb] Re: VDR suggestion - record to TS?



Klaus Schmidinger writes:
 > When converting this TS into multiplexed PES (the format VDR uses to store the 
 > recordings) I take care that the "first" audio packets get the id 0xC0 and the
 > "second" ones get 0xC1. That way I can filter either of them out upon replay.
 > This works fine for the 0xC0 packets, but with the 0xC1 packets video and audio
 > apparently can't be synced.
 > 
 > It looks like the driver delivers the packets in a way that has the video
 > and "first" audio evenly interspersed, like
 > 
 >   v v v a1 v v v v a1 v v a1 v v v a1
 > 
 > but the "second" audio packets come in large chunks that are often about half
 > a megabyte apart from each other, like
 > 
 >   v v v a1 v v v v a1 v a2 a2 a2 a2 a2 v a1 v v v a1 ... v v a2 a2 a2 a2 a2 v v v a1
 > 
 > I looks as if the driver takes great care about the video and "first" audio
 > packets, but collects the "second" audio packets for a while and then delivers
 > them all at once - which is way too late.
 > 
 > Is there a way to make the driver deliver the "second" audio packets as evenly
 > interspersed into the video packets as it does with the "first" ones?


That's because of the buffer size used by the firmware for PES filters.
You can change the buffer size the firmware uses by adjusting "mode" in
StartHWFilter() in dvb.c:


static int 
StartHWFilter(dvb_demux_filter_t *dvbdmxfilter)
{
        dvb_demux_feed_t *dvbdmxfeed=dvbdmxfilter->feed;
        struct dvb_struct *dvb=
                (struct dvb_struct *) dvbdmxfeed->demux->priv;
        u16 buf[20];
        int ret, i;
        u16 handle;
        u16 mode=0x0820;
 ...       
}

0x0100 = 184 Bytes
0x0200 = 378 Bytes 
0x0300 = 1KB
0x0400 = 2KB
0x0500 = 4KB
0x0600 = 8KB
0x0700 = 16KB
0x0800 = 32KB

So, something like "mode=0x0520" should give you better results.
You will probably never get them as evenly spread as the "first" audio
streams packets though because the acquisition is done completely
differently. 

This problem of course only arises with the card version with DSP.
The "budget" or "Nova" cards will give you the TS packets with the
original muxing as they come from the satellite.



Ralph





-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index