Hi,
After the recent implementation of DMX_SET_BUFFER_SIZE for the dvr, tzap has changed:
It used to resize the dvr's buffer to 1 MB, but the ioctl was ignored, so the buffer was always of
the default size
#define DVR_BUFFER_SIZE (10*188*1024)
in dmxdev.h
I think the author of the code meant to *increase* the buffer (which, reading the documentation
seems to be 8K: http://www.linuxtv.org/docs/dvbapi/DVB_Demux_Device.html).
The documentation does not apply to the dvr, but to the demux.
In thins patch:
1) tzap: removed the ioctl call to DMX_SET_BUFFER_SIZE on the dvr. This calls shrinks the size of
the buffer, from about 2MB (#define DVR_BUFFER_SIZE (10*188*1024) in dmxdev.h) to 1MB.
2) in libdvbapi a change in a comment where it is stated that the dvr can be opened more that once
in readonly. It can only be opened once.
3) in libdvbapi a new enum to support DMX_OUT_TSDEMUX_TAP
On top of that I would like to update the documentation of DMX_SET_BUFFER_SIZE, but I could not find
the source.
Regards
Andrea
diff -r 3cde3460d120 lib/libdvbapi/dvbdemux.c
--- a/lib/libdvbapi/dvbdemux.c Tue Mar 11 12:40:20 2008 +0100
+++ b/lib/libdvbapi/dvbdemux.c Sat Mar 22 00:07:29 2008 +0000
@@ -128,6 +128,10 @@ int dvbdemux_set_pes_filter(int fd, int
filter.output = DMX_OUT_TS_TAP;
break;
+ case DVBDEMUX_OUTPUT_TS_DEMUX:
+ filter.output = DMX_OUT_TSDEMUX_TAP;
+ break;
+
default:
return -EINVAL;
}
@@ -201,6 +205,10 @@ int dvbdemux_set_pid_filter(int fd, int
filter.output = DMX_OUT_TS_TAP;
break;
+ case DVBDEMUX_OUTPUT_TS_DEMUX:
+ filter.output = DMX_OUT_TSDEMUX_TAP;
+ break;
+
default:
return -EINVAL;
}
diff -r 3cde3460d120 lib/libdvbapi/dvbdemux.h
--- a/lib/libdvbapi/dvbdemux.h Tue Mar 11 12:40:20 2008 +0100
+++ b/lib/libdvbapi/dvbdemux.h Sat Mar 22 00:07:29 2008 +0000
@@ -55,6 +55,7 @@ extern "C"
#define DVBDEMUX_OUTPUT_DECODER 0
#define DVBDEMUX_OUTPUT_DEMUX 1
#define DVBDEMUX_OUTPUT_DVR 2
+#define DVBDEMUX_OUTPUT_TS_DEMUX 3
/**
* PES types.
@@ -65,6 +66,7 @@ extern "C"
#define DVBDEMUX_PESTYPE_SUBTITLE 3
#define DVBDEMUX_PESTYPE_PCR 4
+
/**
* Open a demux device. Can be called multiple times. These let you setup a
* single filter per FD. It can can also be read() from if you use a section
@@ -78,8 +80,8 @@ extern int dvbdemux_open_demux(int adapt
extern int dvbdemux_open_demux(int adapter, int demuxdevice, int nonblocking);
/**
- * Open a DVR device. May be opened for writing once, or multiple times in readonly
- * mode. It is used to either write() transport stream data to be demuxed
+ * Open a DVR device. May be opened for writing or reading once.
+ * It is used to either write() transport stream data to be demuxed
* (if input == DVBDEMUX_INPUT_DVR), or to read() a stream of demuxed data
* (if output == DVBDEMUX_OUTPUT_DVR).
*
diff -r 3cde3460d120 util/szap/tzap.c
--- a/util/szap/tzap.c Tue Mar 11 12:40:20 2008 +0100
+++ b/util/szap/tzap.c Sat Mar 22 00:07:29 2008 +0000
@@ -676,11 +676,6 @@ int main(int argc, char **argv)
PERROR("failed opening '%s'", DVR_DEV);
return -1;
}
- if (ioctl(dvr_fd, DMX_SET_BUFFER_SIZE, 1024 * 1024)<0)
- {
- PERROR("DMX_SET_BUFFER_SIZE failed");
- return -1;
- }
if (silent<2)
print_frontend_stats (frontend_fd, human_readable);
_______________________________________________
linux-dvb mailing list
linux-dvb@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb