]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
make skip commercials an option in the webif (default to on)
authorJohn Törnblom <john.tornblom@gmail.com>
Mon, 7 Jan 2013 15:50:30 +0000 (16:50 +0100)
committerJohn Törnblom <john.tornblom@gmail.com>
Mon, 7 Jan 2013 15:50:30 +0000 (16:50 +0100)
docs/html/config_dvr.html
src/dvr/dvr.h
src/dvr/dvr_db.c
src/dvr/dvr_rec.c
src/webui/extjs.c
src/webui/static/app/dvr.js

index 05d6b8cc56798d7df248ee72f03394ca330cc467..2b72e8a02481f348ef7fac0daf1467a3f404faa1 100644 (file)
   <dd>If checked, media containers that support metadata will be tagged with
       the metadata associated with the event being recorded.
 
+  <dt>Skip commercials
+  <dd>If checked, commercials will be dropped from the recordings. At the 
+    moment, commercial detection only works for the swedish channel TV4.
+
   <dt>Post-processor command
   <dd>Command to run after finishing a recording. The command will be
       run in background and is executed even if a recording is aborted
index 9cbfacf6ab512e07457c03169ba026bc93a31e93..4c2174aaee1dd4522c34b6737701e296294ef6b9 100644 (file)
@@ -65,6 +65,7 @@ extern struct dvr_entry_list dvrentries;
 #define DVR_EPISODE_IN_TITLE   0x80
 #define DVR_CLEAN_TITLE                0x100
 #define DVR_TAG_FILES           0x200
+#define DVR_SKIP_COMMERCIALS    0x400
 
 typedef enum {
   DVR_PRIO_IMPORTANT,
index 627ef426dfe443b115d84095e5e885b2d92055cd..1b4edf2dd189455e7e6248c1d262b502703a67e1 100644 (file)
@@ -1000,6 +1000,9 @@ dvr_init(void)
       if(!htsmsg_get_u32(m, "tag-files", &u32) && !u32)
         cfg->dvr_flags &= ~DVR_TAG_FILES;
 
+      if(!htsmsg_get_u32(m, "skip-commercials", &u32) && !u32)
+        cfg->dvr_flags &= ~DVR_SKIP_COMMERCIALS;
+
       tvh_str_set(&cfg->dvr_postproc, htsmsg_get_str(m, "postproc"));
     }
 
@@ -1095,7 +1098,7 @@ dvr_config_create(const char *name)
   cfg->dvr_config_name = strdup(name);
   cfg->dvr_retention_days = 31;
   cfg->dvr_mc = MC_MATROSKA;
-  cfg->dvr_flags = DVR_TAG_FILES;
+  cfg->dvr_flags = DVR_TAG_FILES | DVR_SKIP_COMMERCIALS;
 
   /* series link support */
   cfg->dvr_sl_brand_lock   = 1; // use brand linking
@@ -1160,6 +1163,7 @@ dvr_save(dvr_config_t *cfg)
   htsmsg_add_u32(m, "episode-in-title", !!(cfg->dvr_flags & DVR_EPISODE_IN_TITLE));
   htsmsg_add_u32(m, "clean-title", !!(cfg->dvr_flags & DVR_CLEAN_TITLE));
   htsmsg_add_u32(m, "tag-files", !!(cfg->dvr_flags & DVR_TAG_FILES));
+  htsmsg_add_u32(m, "skip-commercials", !!(cfg->dvr_flags & DVR_SKIP_COMMERCIALS));
   if(cfg->dvr_postproc != NULL)
     htsmsg_add_str(m, "postproc", cfg->dvr_postproc);
 
index 2f30bfb25936c00854ee128b824e472af6977ce4..d933c19581e89c1baa249cbc2aa82612a5981ab1 100755 (executable)
@@ -398,11 +398,13 @@ static void *
 dvr_thread(void *aux)
 {
   dvr_entry_t *de = aux;
+  dvr_config_t *cfg = dvr_config_find_by_name_default(de->de_config_name);
   streaming_queue_t *sq = &de->de_sq;
   streaming_message_t *sm;
   th_pkt_t *pkt;
   int run = 1;
   int started = 0;
+  int comm_skip = (cfg->dvr_flags & DVR_SKIP_COMMERCIALS);
 
   pthread_mutex_lock(&sq->sq_mutex);
 
@@ -423,7 +425,7 @@ dvr_thread(void *aux)
       pkt = sm->sm_data;
       if(pkt->pkt_commercial == COMMERCIAL_YES) {
        dvr_rec_set_state(de, DVR_RS_COMMERCIAL, 0);
-       tsfix_set_comm_skip(de->de_tsfix, 1);
+       tsfix_set_comm_skip(de->de_tsfix, comm_skip);
       } else {
        dvr_rec_set_state(de, DVR_RS_RUNNING, 0);
        tsfix_set_comm_skip(de->de_tsfix, 0);
index deca304b4e165d98e1c5c89a85ffa26d0951c753..88496e6f19cb8f8ea71ca63e780398c97673f46b 100644 (file)
@@ -1211,6 +1211,7 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque)
     htsmsg_add_u32(r, "episodeInTitle", !!(cfg->dvr_flags & DVR_EPISODE_IN_TITLE));
     htsmsg_add_u32(r, "cleanTitle", !!(cfg->dvr_flags & DVR_CLEAN_TITLE));
     htsmsg_add_u32(r, "tagFiles", !!(cfg->dvr_flags & DVR_TAG_FILES));
+    htsmsg_add_u32(r, "commSkip", !!(cfg->dvr_flags & DVR_SKIP_COMMERCIALS));
 
     out = json_single_record(r, "dvrSettings");
 
@@ -1261,6 +1262,9 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque)
       flags |= DVR_EPISODE_IN_TITLE;
     if(http_arg_get(&hc->hc_req_args, "tagFiles") != NULL)
       flags |= DVR_TAG_FILES;
+    if(http_arg_get(&hc->hc_req_args, "commSkip") != NULL)
+      flags |= DVR_SKIP_COMMERCIALS;
+
 
     dvr_flags_set(cfg,flags);
 
index 564eab3a51f1c715fa4d1ecfbbdefa2e24ce5bab..fa7d40416624cc7b3160a30b7a547958fb2234dc 100644 (file)
@@ -703,7 +703,7 @@ tvheadend.dvrsettings = function() {
        }, [ 'storage', 'postproc', 'retention', 'dayDirs', 'channelDirs',
                'channelInTitle', 'container', 'dateInTitle', 'timeInTitle',
                'preExtraTime', 'postExtraTime', 'whitespaceInTitle', 'titleDirs',
-               'episodeInTitle', 'cleanTitle', 'tagFiles' ]);
+               'episodeInTitle', 'cleanTitle', 'tagFiles', 'commSkip' ]);
 
        var confcombo = new Ext.form.ComboBox({
                store : tvheadend.configNames,
@@ -793,6 +793,9 @@ tvheadend.dvrsettings = function() {
                }), new Ext.form.Checkbox({
                        fieldLabel : 'Tag files with metadata',
                        name : 'tagFiles'
+               }), new Ext.form.Checkbox({
+                       fieldLabel : 'Skip commercials',
+                       name : 'commSkip'
                }), {
                        width : 300,
                        fieldLabel : 'Post-processor command',