static int Demux( demux_t *p_demux ) { demux_sys_t *p_sys = p_demux->p_sys; block_t *p_block; uint64_t pts; uint32_t size; if (stream_Read( p_demux->s, &pts, 8) < 8) return -1; if (stream_Read( p_demux->s, &size, 4) < 4) return -1; if (p_sys->bufferSize < size) { p_sys->bufferSize = size; p_sys->buffer = realloc(p_sys->buffer, size); } if (stream_Read( p_demux->s, p_sys->buffer, size) < size) return -1; p_block = block_New(p_demux, p_sys->size); p_block->i_dts = p_block->i_pts = 1; seomCodecDecode(p_block->p_buffer, p_sys->buffer, p_sys->size); es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_block->i_pts ); es_out_Send( p_demux->out, p_sys->p_es, p_block ); return 1; }