mirror of
https://code.videolan.org/videolan/vlc
synced 2024-08-27 04:21:53 +02:00
decoder: add input_DecoderFlush()
This commit is contained in:
parent
984aadb5ca
commit
7a53080610
@ -617,6 +617,7 @@ static inline int input_ModifyPcrSystem( input_thread_t *p_input, bool b_absolut
|
||||
VLC_API decoder_t * input_DecoderCreate( vlc_object_t *, const es_format_t *, input_resource_t * ) VLC_USED;
|
||||
VLC_API void input_DecoderDelete( decoder_t * );
|
||||
VLC_API void input_DecoderDecode( decoder_t *, block_t *, bool b_do_pace );
|
||||
VLC_API void input_DecoderFlush( decoder_t * );
|
||||
|
||||
/**
|
||||
* This function creates a sane filename path.
|
||||
|
@ -514,15 +514,28 @@ void input_DecoderChangeDelay( decoder_t *p_dec, mtime_t i_delay )
|
||||
vlc_mutex_unlock( &p_owner->lock );
|
||||
}
|
||||
|
||||
/**
|
||||
* Requests that the decoder immediately discard all pending buffers.
|
||||
* This is useful at end of stream, when seeking or when deselecting a stream.
|
||||
*/
|
||||
void input_DecoderFlush( decoder_t *p_dec )
|
||||
{
|
||||
decoder_owner_sys_t *p_owner = p_dec->p_owner;
|
||||
|
||||
vlc_mutex_lock( &p_owner->lock );
|
||||
DecoderFlush( p_dec );
|
||||
vlc_mutex_unlock( &p_owner->lock );
|
||||
}
|
||||
|
||||
void input_DecoderStartWait( decoder_t *p_dec )
|
||||
{
|
||||
decoder_owner_sys_t *p_owner = p_dec->p_owner;
|
||||
|
||||
assert( !p_owner->b_waiting );
|
||||
|
||||
vlc_mutex_lock( &p_owner->lock );
|
||||
DecoderFlush( p_dec );
|
||||
input_DecoderFlush( p_dec );
|
||||
|
||||
vlc_mutex_lock( &p_owner->lock );
|
||||
p_owner->b_first = true;
|
||||
p_owner->b_has_data = false;
|
||||
p_owner->b_waiting = true;
|
||||
@ -579,6 +592,7 @@ void input_DecoderFrameNext( decoder_t *p_dec, mtime_t *pi_duration )
|
||||
else
|
||||
{
|
||||
/* TODO subtitle should not be flushed */
|
||||
p_owner->b_waiting = false;
|
||||
DecoderFlush( p_dec );
|
||||
}
|
||||
vlc_mutex_unlock( &p_owner->lock );
|
||||
@ -942,7 +956,6 @@ static void DecoderFlush( decoder_t *p_dec )
|
||||
/* Empty the fifo */
|
||||
block_FifoEmpty( p_owner->p_fifo );
|
||||
|
||||
p_owner->b_waiting = false;
|
||||
/* Monitor for flush end */
|
||||
p_owner->b_flushing = true;
|
||||
vlc_cond_signal( &p_owner->wait_request );
|
||||
|
@ -174,9 +174,10 @@ input_Control
|
||||
input_Create
|
||||
input_CreateAndStart
|
||||
input_CreateFilename
|
||||
input_DecoderDecode
|
||||
input_DecoderDelete
|
||||
input_DecoderCreate
|
||||
input_DecoderDelete
|
||||
input_DecoderDecode
|
||||
input_DecoderFlush
|
||||
input_GetItem
|
||||
input_item_AddInfo
|
||||
input_item_AddOption
|
||||
|
Loading…
Reference in New Issue
Block a user