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

Reply via email to