mirror of
https://code.videolan.org/videolan/vlc
synced 2024-08-27 04:21:53 +02:00
decoder: add input_DecoderDrain()
This commit is contained in:
parent
d173264a9a
commit
132f872d78
@ -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_DecoderDrain( decoder_t * );
|
||||
VLC_API void input_DecoderFlush( decoder_t * );
|
||||
|
||||
/**
|
||||
|
@ -1925,6 +1925,24 @@ bool input_DecoderIsEmpty( decoder_t * p_dec )
|
||||
return b_empty;
|
||||
}
|
||||
|
||||
/**
|
||||
* Signals that there are no further blocks to decode, and requests that the
|
||||
* decoder drain all pending buffers. This is used to ensure that all
|
||||
* intermediate buffers empty and no samples get lost at the end of the stream.
|
||||
*
|
||||
* @note The function does not actually wait for draining. It just signals that
|
||||
* draining should be performed once the decoder has emptied FIFO.
|
||||
*/
|
||||
void input_DecoderDrain( decoder_t *p_dec )
|
||||
{
|
||||
block_t *p_block = block_Alloc(0);
|
||||
if( unlikely(p_block == NULL) )
|
||||
return;
|
||||
|
||||
p_block->i_flags |= BLOCK_FLAG_CORE_EOS;
|
||||
input_DecoderDecode( p_dec, p_block, false );
|
||||
}
|
||||
|
||||
static void DecoderFlush( decoder_t *p_dec )
|
||||
{
|
||||
decoder_owner_sys_t *p_owner = p_dec->p_owner;
|
||||
@ -1951,7 +1969,7 @@ static void DecoderFlush( decoder_t *p_dec )
|
||||
|
||||
/**
|
||||
* Requests that the decoder immediately discard all pending buffers.
|
||||
* This is useful at end of stream, when seeking or when deselecting a stream.
|
||||
* This is useful when seeking or when deselecting a stream.
|
||||
*/
|
||||
void input_DecoderFlush( decoder_t *p_dec )
|
||||
{
|
||||
|
@ -177,6 +177,7 @@ input_CreateFilename
|
||||
input_DecoderCreate
|
||||
input_DecoderDelete
|
||||
input_DecoderDecode
|
||||
input_DecoderDrain
|
||||
input_DecoderFlush
|
||||
input_GetItem
|
||||
input_item_AddInfo
|
||||
|
Loading…
Reference in New Issue
Block a user