void streaming_target_deliver2(streaming_target_t *st, streaming_message_t *sm) { if (st->st_reject_filter & SMT_TO_MASK(sm->sm_type)) streaming_msg_free(sm); else streaming_target_deliver(st, sm); }
void streaming_pad_deliver(streaming_pad_t *sp, streaming_message_t *sm) { streaming_target_t *st, *next, *run = NULL; for (st = LIST_FIRST(&sp->sp_targets); st; st = next) { next = LIST_NEXT(st, st_link); assert(next != st); if (st->st_reject_filter & SMT_TO_MASK(sm->sm_type)) continue; if (run) streaming_target_deliver(run, streaming_msg_clone(sm)); run = st; } if (run) streaming_target_deliver(run, sm); else streaming_msg_free(sm); }
void dvr_rec_unsubscribe(dvr_entry_t *de, int stopcode) { assert(de->de_s != NULL); subscription_unsubscribe(de->de_s); streaming_target_deliver(&de->de_sq.sq_st, streaming_msg_create(SMT_EXIT)); pthread_join(de->de_thread, NULL); de->de_s = NULL; if(de->de_tsfix) tsfix_destroy(de->de_tsfix); if(de->de_gh) globalheaders_destroy(de->de_gh); de->de_last_error = stopcode; }
void dvr_rec_unsubscribe(dvr_entry_t *de, int stopcode) { profile_chain_t *prch = de->de_chain; assert(de->de_s != NULL); assert(prch != NULL); streaming_target_deliver(prch->prch_st, streaming_msg_create(SMT_EXIT)); pthread_join(de->de_thread, NULL); subscription_unsubscribe(de->de_s); de->de_s = NULL; de->de_chain = NULL; profile_chain_close(prch); free(prch); de->de_last_error = stopcode; }
void dvr_rec_unsubscribe(dvr_entry_t *de, int stopcode) { dvr_config_t *cfg = dvr_config_find_by_name_default(de->de_config_name); assert(de->de_s != NULL); subscription_unsubscribe(de->de_s); streaming_target_deliver(&de->de_sq.sq_st, streaming_msg_create(SMT_EXIT)); pthread_join(de->de_thread, NULL); de->de_s = NULL; if(strcmp(cfg->dvr_format, "matroska") == 0) { tsfix_destroy(de->de_tsfix); globalheaders_destroy(de->de_gh); // } else if { (Other containers) // mpegts works like rawts } de->de_last_error = stopcode; }