void dvr_rec_subscribe(dvr_entry_t *de) { char buf[100]; int weight; dvr_config_t *cfg = dvr_config_find_by_name_default(de->de_config_name); int matroska = strcmp(cfg->dvr_format, "matroska") == 0; assert(de->de_s == NULL); snprintf(buf, sizeof(buf), "DVR: %s", de->de_title); streaming_queue_init(&de->de_sq, matroska ? 0 : SMT_TO_MASK(SMT_PACKET)); pthread_create(&de->de_thread, NULL, dvr_thread, de); if(de->de_pri < 5) weight = prio2weight[de->de_pri]; else weight = 300; tvhlog(LOG_DEBUG, "dvr", "Use %s container", cfg->dvr_format); if(matroska) { de->de_gh = globalheaders_create(&de->de_sq.sq_st); de->de_tsfix = tsfix_create(de->de_gh); de->de_s = subscription_create_from_channel(de->de_channel, weight, buf, de->de_tsfix, 0); // } else if { (Other containers) // mpegts works like rawts } else { de->de_s = subscription_create_from_channel(de->de_channel, weight, buf, &de->de_sq.sq_st, SUBSCRIPTION_RAW_MPEGTS); } }
void dvr_rec_subscribe(dvr_entry_t *de) { char buf[100]; int weight; streaming_target_t *st; int flags; assert(de->de_s == NULL); if(de->de_pri < 5) weight = prio2weight[de->de_pri]; else weight = 300; snprintf(buf, sizeof(buf), "DVR: %s", lang_str_get(de->de_title, NULL)); if(de->de_mc == MC_PASS) { streaming_queue_init(&de->de_sq, SMT_PACKET); de->de_gh = NULL; de->de_tsfix = NULL; st = &de->de_sq.sq_st; flags = SUBSCRIPTION_RAW_MPEGTS; } else { streaming_queue_init(&de->de_sq, 0); de->de_gh = globalheaders_create(&de->de_sq.sq_st); st = de->de_tsfix = tsfix_create(de->de_gh); tsfix_set_start_time(de->de_tsfix, de->de_start - (60 * de->de_start_extra)); flags = 0; } de->de_s = subscription_create_from_channel(de->de_channel, weight, buf, st, flags, NULL, NULL, NULL); pthread_create(&de->de_thread, NULL, dvr_thread, de); }