int main(int argc, char **argv) { u8 data[188]; u32 size; MPEDemux *mpedemux; if (argc < 2) { usage(); return GF_OK; } GF_SAFEALLOC(mpedemux, MPEDemux); mpedemux->ts_demux = gf_m2ts_demux_new(); mpedemux->ts_demux->on_event = mpedemux_on_event; mpedemux->ts_demux->user = mpedemux; mpedemux->ts_file = fopen(argv[1], "rb"); while (1) { /*read chunks by chunks*/ size = fread(data, 1, 188, mpedemux->ts_file); if (!size) break; /*process chunk*/ gf_m2ts_process_data(mpedemux->ts_demux, data, size); } gf_m2ts_demux_del(mpedemux->ts_demux); gf_free(mpedemux); return GF_OK; }
int main(int argc, char **argv) { char data[188]; u32 size, fsize, fdone; GF_M2TS_Demuxer *ts; FILE *src = gf_fopen(argv[1], "rb"); ts = gf_m2ts_demux_new(); ts->on_event = on_m2ts_event; fseek(src, 0, SEEK_END); fsize = ftell(src); fseek(src, 0, SEEK_SET); fdone = 0; while (!feof(src)) { size = fread(data, 1, 188, src); if (size<188) break; gf_m2ts_process_data(ts, data, size); if (has_seen_pat) break; } dest = gf_fopen("pes.mp3", "wb"); gf_m2ts_reset_parsers(ts); gf_fseek(src, 0, SEEK_SET); fdone = 0; while (!feof(src)) { size = fread(data, 1, 188, src); if (size<188) break; gf_m2ts_process_data(ts, data, size); fdone += size; gf_set_progress("MPEG-2 TS Parsing", fdone, fsize); } gf_set_progress("MPEG-2 TS Parsing", fsize, fsize); gf_fclose(src); gf_m2ts_demux_del(ts); if (dest) gf_fclose(dest); return 0; }
void DeleteM2TSReader(void *ifce) { u32 i, count; M2TSIn *m2ts; GF_InputService *plug = (GF_InputService *) ifce; if (!ifce) return; m2ts = plug->priv; if (!m2ts) return; if( m2ts->ts->requested_progs ) { count = gf_list_count(m2ts->ts->requested_progs); for (i = 0; i < count; i++) { M2TSIn_Prog *prog = gf_list_get(m2ts->ts->requested_progs, i); gf_free(prog->fragment); gf_free(prog); } gf_list_del(m2ts->ts->requested_progs); } m2ts->ts->requested_progs = NULL; if( m2ts->ts->requested_pids ) { count = gf_list_count(m2ts->ts->requested_pids); for (i = 0; i < count; i++) { M2TSIn_Prog *prog = gf_list_get(m2ts->ts->requested_pids, i); gf_free(prog); } gf_list_del(m2ts->ts->requested_pids); } m2ts->ts->requested_pids = NULL; if (m2ts->network_buffer) gf_free(m2ts->network_buffer); m2ts->network_buffer = NULL; m2ts->network_buffer_size = 0; m2ts->request_all_pids = 0; gf_m2ts_demux_del(m2ts->ts); m2ts->ts = NULL; gf_mx_del(m2ts->mx); m2ts->mx = NULL; gf_free(m2ts); plug->priv = NULL; gf_free(plug); }