Example #1
0
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);
}
Example #2
0
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);
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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;
}