Ejemplo n.º 1
0
Archivo: main.c Proyecto: Bevara/GPAC
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;
}
Ejemplo n.º 2
0
Archivo: main.c Proyecto: ARSekkat/gpac
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;
}
Ejemplo n.º 3
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);
}