- bool b_has_more = false;
- bool b_reject;
- DecoderWaitUnblock( p_dec, &b_reject );
-
- if( p_owner->b_buffering )
- {
- vlc_mutex_unlock( &p_owner->lock );
- return;
- }
-
- /* */
- if( p_owner->buffer.p_block )
- {
- p_sout_block = p_owner->buffer.p_block;
-
- p_owner->buffer.p_block = p_sout_block->p_next;
- p_owner->buffer.i_count--;
-
- b_has_more = p_owner->buffer.p_block != NULL;
- if( !b_has_more )
- p_owner->buffer.pp_block_next = &p_owner->buffer.p_block;
- }
- p_sout_block->p_next = NULL;
-
- DecoderFixTs( p_dec, &p_sout_block->i_dts, &p_sout_block->i_pts,
- &p_sout_block->i_length, NULL, INT64_MAX );
-
- vlc_mutex_unlock( &p_owner->lock );
-
- if( !b_reject )
- sout_InputSendBuffer( p_owner->p_sout_input, p_sout_block ); // FIXME --VLC_TS_INVALID inspect stream_output/*
- else
- block_Release( p_sout_block );
-
- if( !b_has_more )
- break;
- vlc_mutex_lock( &p_owner->lock );
- if( !p_owner->buffer.p_block )
- {
- vlc_mutex_unlock( &p_owner->lock );
- break;
- }