Help with demux, dvr and ringbuffers

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

 



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@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb

[Index of Archives]     [Linux Media]     [Video 4 Linux]     [Asterisk]     [Samba]     [Xorg]     [Xfree86]     [Linux USB]

  Powered by Linux