-
-static int Demux( demux_t *p_demux )
-{
- demux_sys_t *p_sys = p_demux->p_sys;
- block_t *p_video_block = NULL;
- block_t *p_audio_block = NULL;
-
- vlc_mutex_lock( &p_sys->frame_lock );
-
- while( !p_sys->p_video_frame && !p_sys->p_audio_frame )
- vlc_cond_wait( &p_sys->has_frame, &p_sys->frame_lock );
-
- p_video_block = p_sys->p_video_frame;
- p_sys->p_video_frame = NULL;
-
- p_audio_block = p_sys->p_audio_frame;
- p_sys->p_audio_frame = NULL;
-
- vlc_mutex_unlock( &p_sys->frame_lock );
-
- if( p_video_block )
- {
- if( p_video_block->i_pts > p_sys->i_last_pts )
- p_sys->i_last_pts = p_video_block->i_pts;
- es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_video_block->i_pts );
- es_out_Send( p_demux->out, p_sys->p_video_es, p_video_block );
- }
-
- if( p_audio_block )
- {
- if( p_audio_block->i_pts > p_sys->i_last_pts )
- p_sys->i_last_pts = p_audio_block->i_pts;
- es_out_Control( p_demux->out, ES_OUT_SET_PCR, p_audio_block->i_pts );
- es_out_Send( p_demux->out, p_sys->p_audio_es, p_audio_block );
- }
-
- return 1;
-}
-