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; profile_t *pro; profile_chain_t *prch; assert(de->de_s == NULL); assert(de->de_chain == NULL); if(de->de_pri < ARRAY_SIZE(prio2weight)) weight = prio2weight[de->de_pri]; else weight = 300; snprintf(buf, sizeof(buf), "DVR: %s", lang_str_get(de->de_title, NULL)); pro = de->de_config->dvr_profile; prch = malloc(sizeof(*prch)); profile_chain_init(prch, pro, de->de_channel); if (profile_chain_open(prch, &de->de_config->dvr_muxcnf, 0, 0)) { tvherror("dvr", "unable to create new channel streaming chain for '%s'", channel_get_name(de->de_channel)); return; } de->de_s = subscription_create_from_channel(prch, weight, buf, prch->prch_flags, NULL, NULL, NULL); if (de->de_s == NULL) { tvherror("dvr", "unable to create new channel subcription for '%s'", channel_get_name(de->de_channel)); profile_chain_close(prch); free(prch); de->de_chain = NULL; return; } de->de_chain = prch; tvhthread_create(&de->de_thread, NULL, dvr_thread, de); }
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); }