Hi,

I've understood a bit more how demux, dvr and rigbuffers work, but I still have 
a couple of issues.
I've been studying tzap, which seems much easier than gnutv.

tzap opens the demux twice (audio and video) and then opens the dvr to read the 
multiplexed data.
There are 3 ringbuffers involved:

When a demux is opened, a ringbuffer of 8192 is created (so there are 2 of 
them).
I can change its size using DMX_SET_BUFFER_SIZE on the demux.

Then when the dvr is opened an other ringbuffer is created of size 1925120 = 18 
* 100 * 1024.
I don't know how to change its size.

My question is the following:

When I setup the demux to output to the dvr with DMX_OUT_TS_TAP, what happens 
afterwards?
Is the following correct or wrong?

1) The "kernel" will write data into the 2 buffers
2) The "kernel" will read from the 2 demuxes and write to the dvr.
This has very low latency so a small ringbuffer for the 2 demuxes is ok.

3) A userspace application has to read from the dvr. If it is not fast enough 
the dvr's ringbuffer 
gets filled and we are in troubles.
If this happens I think the best solution would be to overwrite the oldest data.

This ringbuffer needs to take into account all sort of bottleneck one might 
have.




If it is true I have to find how to change the size of the dvr's ringbuffer.
Anybody knows why the callback (in dmxdev.c)

static int dvb_dvr_do_ioctl(struct inode *inode, struct file *file,
                            unsigned int cmd, void *parg)

does not handle DMX_SET_BUFFER_SIZE? Is there an intrinsic issue or is it just 
to be done?

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

Reply via email to