]> git.zerfleddert.de Git - record-dvb/blobdiff - record-dvb.c
add SAP/SDP support
[record-dvb] / record-dvb.c
index 38609a4996c27cf7caea23c89a8469e22c57fe00..d87d3e789ce362110c7161030ad1918e10398b12 100644 (file)
 
 #include "http.h"
 #include "mcast.h"
 
 #include "http.h"
 #include "mcast.h"
+#include "sap.h"
 
 
-#define CHUNKSIZE 3000
-#define GTOD_INTERVAL 100
+#define CHUNKSIZE      3000
+#define GTOD_INTERVAL  100
+#define MAX_ERROR_SLEEP        60
 
 void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
 {
 
 void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
 {
@@ -44,9 +46,12 @@ void record(int(*open_fn)(char *), char *url, char *outfile, int duration)
                        sleep(error_sleep);
                        printf("Reconnecting... ");
                        if ((in = (*open_fn)(url)) < 0) {
                        sleep(error_sleep);
                        printf("Reconnecting... ");
                        if ((in = (*open_fn)(url)) < 0) {
-                               if (error_sleep < 60)
+                               if (error_sleep < MAX_ERROR_SLEEP)
                                        error_sleep *= 2;
 
                                        error_sleep *= 2;
 
+                               if (error_sleep > MAX_ERROR_SLEEP)
+                                       error_sleep = MAX_ERROR_SLEEP;
+
                                printf("failed\n");
                                continue;
                        } else {
                                printf("failed\n");
                                continue;
                        } else {
@@ -93,12 +98,20 @@ int main(int argc, char **argv)
                exit(EXIT_FAILURE);
        }
 
                exit(EXIT_FAILURE);
        }
 
+       if (!is_http(url) && !is_mcast(url)) {
+               char *service_url;
+               if ((service_url = get_url_from_sap(url))) {
+                       printf("SAP says: '%s' -> %s\n", url, service_url);
+                       url = service_url;
+               }
+       }
+
        if (is_http(url)) {
                open_fn = &open_http;
        } else if (is_mcast(url)) {
                open_fn = &open_mcast;
        } else {
        if (is_http(url)) {
                open_fn = &open_http;
        } else if (is_mcast(url)) {
                open_fn = &open_mcast;
        } else {
-               printf("URL %s not supported!\n", url);
+               printf("URL '%s' not supported!\n", url);
                exit(EXIT_FAILURE);
        }
 
                exit(EXIT_FAILURE);
        }
 
Impressum, Datenschutz