The patch number 1215 was added via Christoph Pfister <[EMAIL PROTECTED]>
to http://linuxtv.org/hg/dvb-apps master development tree.
If anyone has any objections, please let us know by sending a message to:
[EMAIL PROTECTED]
------
gnutv: make dvr buffer size configurable
patch by Andrea
http://linuxtv.org/pipermail/linux-dvb/2008-July/027177.html
---
util/gnutv/gnutv.c | 12 +++++++++++-
util/gnutv/gnutv_data.c | 18 +++++++++++++++++-
util/gnutv/gnutv_data.h | 2 +-
3 files changed, 29 insertions(+), 3 deletions(-)
diff -r 363d557af25b -r 16a88623f648 util/gnutv/gnutv.c
--- a/util/gnutv/gnutv.c Fri Jul 18 23:23:07 2008 +0200
+++ b/util/gnutv/gnutv.c Fri Jul 18 23:35:01 2008 +0200
@@ -66,6 +66,7 @@ void usage(void)
" * C-MULTI - Big Dish - Multipoint
LNBf, 3700 to 4200 MHz,\n"
" Dual LO,
H:5150MHz, V:5750MHz.\n"
" * One of the sec definitions from the
secfile if supplied\n"
+ " -buffer <size> Custom DVR buffer size\n"
" -out decoder Output to hardware decoder (default)\n"
" decoderabypass Output to hardware decoder using audio
bypass\n"
" dvr Output stream to dvr device\n"
@@ -124,6 +125,7 @@ int main(int argc, char *argv[])
struct gnutv_ca_params gnutv_ca_params;
int ffaudiofd = -1;
int usertp = 0;
+ int buffer_size = 0;
while(argpos != argc) {
if (!strcmp(argv[argpos], "-h")) {
@@ -166,6 +168,14 @@ int main(int argc, char *argv[])
if ((argc - argpos) < 2)
usage();
secid = argv[argpos+1];
+ argpos+=2;
+ } else if (!strcmp(argv[argpos], "-buffer")) {
+ if ((argc - argpos) < 2)
+ usage();
+ if (sscanf(argv[argpos+1], "%i", &buffer_size) != 1)
+ usage();
+ if (buffer_size < 0)
+ usage();
argpos+=2;
} else if (!strcmp(argv[argpos], "-out")) {
if ((argc - argpos) < 2)
@@ -320,7 +330,7 @@ int main(int argc, char *argv[])
gnutv_dvb_start(&gnutv_dvb_params);
// start the data stuff
- gnutv_data_start(output_type, ffaudiofd, adapter_id, demux_id,
outfile, outif, outaddrs, usertp);
+ gnutv_data_start(output_type, ffaudiofd, adapter_id, demux_id,
buffer_size, outfile, outif, outaddrs, usertp);
}
// the UI
diff -r 363d557af25b -r 16a88623f648 util/gnutv/gnutv_data.c
--- a/util/gnutv/gnutv_data.c Fri Jul 18 23:23:07 2008 +0200
+++ b/util/gnutv/gnutv_data.c Fri Jul 18 23:35:01 2008 +0200
@@ -77,7 +77,7 @@ static int pid_fds_count = 0;
static int pid_fds_count = 0;
void gnutv_data_start(int _output_type,
- int ffaudiofd, int _adapter_id, int _demux_id,
+ int ffaudiofd, int _adapter_id, int _demux_id, int
buffer_size,
char *outfile,
char* outif, struct addrinfo *_outaddrs, int _usertp)
{
@@ -114,6 +114,14 @@ void gnutv_data_start(int _output_type,
exit(1);
}
+ // optionally set dvr buffer size
+ if (buffer_size > 0) {
+ if (dvbdemux_set_buffer(dvrfd, buffer_size) != 0) {
+ fprintf(stderr, "Failed to set DVR buffer
size\n");
+ exit(1);
+ }
+ }
+
pthread_create(&outputthread, NULL, fileoutputthread_func,
NULL);
break;
@@ -140,6 +148,14 @@ void gnutv_data_start(int _output_type,
if (dvrfd < 0) {
fprintf(stderr, "Failed to open DVR device\n");
exit(1);
+ }
+
+ // optionally set dvr buffer size
+ if (buffer_size > 0) {
+ if (dvbdemux_set_buffer(dvrfd, buffer_size) != 0) {
+ fprintf(stderr, "Failed to set DVR buffer
size\n");
+ exit(1);
+ }
}
pthread_create(&outputthread, NULL, udpoutputthread_func, NULL);
diff -r 363d557af25b -r 16a88623f648 util/gnutv/gnutv_data.h
--- a/util/gnutv/gnutv_data.h Fri Jul 18 23:23:07 2008 +0200
+++ b/util/gnutv/gnutv_data.h Fri Jul 18 23:35:01 2008 +0200
@@ -26,7 +26,7 @@
#include <netdb.h>
extern void gnutv_data_start(int output_type,
- int ffaudiofd, int adapter_id, int demux_id,
+ int ffaudiofd, int adapter_id, int demux_id, int
buffer_size,
char *outfile,
char* outif, struct addrinfo *outaddrs, int usertp);
extern void gnutv_data_stop(void);
---
Patch is available at:
http://linuxtv.org/hg/dvb-apps/rev/16a88623f648b41bd615fd53ff5510fff3f0c1fe
_______________________________________________
linuxtv-commits mailing list
[email protected]
http://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits