static void pkt_destroy(th_pkt_t *pkt) { pktbuf_ref_dec(pkt->pkt_payload); pktbuf_ref_dec(pkt->pkt_meta); free(pkt); }
static void pkt_destroy(th_pkt_t *pkt) { if (pkt) { pktbuf_ref_dec(pkt->pkt_payload); pktbuf_ref_dec(pkt->pkt_meta); free(pkt); memoryinfo_free(&pkt_memoryinfo, sizeof(*pkt)); } }
/** * Allocate a new packet and give it a refcount of one (which caller is * suppoed to take care of) */ th_pkt_t * pkt_alloc(streaming_component_type_t type, const uint8_t *data, size_t datalen, int64_t pts, int64_t dts, int64_t pcr) { th_pkt_t *pkt; pktbuf_t *payload; if (datalen > 0) { payload = pktbuf_alloc(data, datalen); if (payload == NULL) return NULL; } else { payload = NULL; } pkt = calloc(1, sizeof(th_pkt_t)); if (pkt) { pkt->pkt_type = type; pkt->pkt_payload = payload; pkt->pkt_dts = dts; pkt->pkt_pts = pts; pkt->pkt_pcr = pcr; pkt->pkt_refcount = 1; memoryinfo_alloc(&pkt_memoryinfo, sizeof(*pkt)); } else { if (payload) pktbuf_ref_dec(payload); } return pkt; }
static void htsp_msg_destroy(htsp_msg_t *hm) { htsmsg_destroy(hm->hm_msg); if(hm->hm_pb != NULL) pktbuf_ref_dec(hm->hm_pb); free(hm); }
void streaming_start_unref(streaming_start_t *ss) { int i; if((atomic_add(&ss->ss_refcount, -1)) != 1) return; service_source_info_free(&ss->ss_si); for(i = 0; i < ss->ss_num_components; i++) if(ss->ss_components[i].ssc_gh) pktbuf_ref_dec(ss->ss_components[i].ssc_gh); free(ss); }
void streaming_msg_free(streaming_message_t *sm) { if (!sm) return; switch(sm->sm_type) { case SMT_PACKET: if(sm->sm_data) pkt_ref_dec(sm->sm_data); break; case SMT_START: if(sm->sm_data) streaming_start_unref(sm->sm_data); break; case SMT_GRACE: case SMT_STOP: case SMT_EXIT: case SMT_SERVICE_STATUS: case SMT_NOSTART: case SMT_NOSTART_WARN: case SMT_SPEED: break; case SMT_SKIP: case SMT_SIGNAL_STATUS: case SMT_DESCRAMBLE_INFO: #if ENABLE_TIMESHIFT case SMT_TIMESHIFT_STATUS: #endif free(sm->sm_data); break; case SMT_MPEGTS: if(sm->sm_data) pktbuf_ref_dec(sm->sm_data); break; default: abort(); } memoryinfo_free(&streaming_msg_memoryinfo, sizeof(*sm)); free(sm); }
void streaming_msg_free(streaming_message_t *sm) { switch(sm->sm_type) { case SMT_PACKET: if(sm->sm_data) pkt_ref_dec(sm->sm_data); break; case SMT_START: if(sm->sm_data) streaming_start_unref(sm->sm_data); break; case SMT_STOP: case SMT_EXIT: case SMT_SERVICE_STATUS: case SMT_NOSTART: case SMT_SPEED: break; case SMT_SKIP: case SMT_SIGNAL_STATUS: #if ENABLE_TIMESHIFT case SMT_TIMESHIFT_STATUS: #endif free(sm->sm_data); break; case SMT_MPEGTS: if(sm->sm_data) pktbuf_ref_dec(sm->sm_data); break; default: abort(); } free(sm); }