MP4FileSource::~MP4FileSource() { for (int i = 0; i < m_count; i++) { struct media_t* m = &m_media[i]; if (m->rtp) { rtp_destroy(m->rtp); m->rtp = NULL; } if (m->packer) { rtp_payload_encode_destroy(m->packer); m->packer = NULL; } } if (m_reader) { mov_reader_destroy(m_reader); m_reader = NULL; } if (m_fp) fclose(m_fp); }
void* rtp_create(struct rtp_event_t *handler, void* param, uint32_t ssrc, int frequence, int boundwidth) { struct rtp_context *ctx; ctx = (struct rtp_context *)calloc(1, sizeof(*ctx)); if(!ctx) return NULL; ctx->self = rtp_member_create(ssrc); ctx->members = rtp_member_list_create(); ctx->senders = rtp_member_list_create(); if(!ctx->self || !ctx->members || !ctx->senders) { rtp_destroy(ctx); return NULL; } rtp_member_list_add(ctx->members, ctx->self); memcpy(&ctx->handler, handler, sizeof(ctx->handler)); ctx->cbparam = param; ctx->rtcp_bw = (size_t)(boundwidth * RTCP_BANDWIDTH_FRACTION); ctx->avg_rtcp_size = 0; ctx->frequence = frequence; ctx->role = RTP_RECEIVER; ctx->init = 1; return ctx; }
H264FileSource::~H264FileSource() { if(m_rtp) rtp_destroy(m_rtp); if(m_rtppacker) rtp_h264_packer()->destroy(m_rtppacker); }