mirror of https://code.videolan.org/videolan/vlc
stream_filter: split out code for automatic filter probing
This commit is contained in:
parent
3bf3de015a
commit
15a2182a62
|
@ -2309,6 +2309,8 @@ static int InputSourceInit( input_thread_t *p_input,
|
|||
}
|
||||
|
||||
/* Add stream filters */
|
||||
p_stream = stream_FilterAutoNew( p_stream );
|
||||
|
||||
char *psz_stream_filter = var_GetNonEmptyString( p_input,
|
||||
"stream-filter" );
|
||||
p_stream = stream_FilterChainNew( p_stream, psz_stream_filter,
|
||||
|
|
|
@ -46,11 +46,18 @@ stream_t *stream_AccessNew( access_t *p_access );
|
|||
stream_t *stream_FilterNew( stream_t *p_source,
|
||||
const char *psz_stream_filter );
|
||||
|
||||
/**
|
||||
* Automatically wraps a stream with any applicable stream filter.
|
||||
* @return the (outermost/downstream) stream filter; if no filters were added,
|
||||
* then the function return the source parameter.
|
||||
* @note The function never returns NULL.
|
||||
*/
|
||||
stream_t *stream_FilterAutoNew( stream_t *source ) VLC_USED;
|
||||
|
||||
/**
|
||||
* This function creates a chain of filters:
|
||||
* - first, automatic probed stream filters are inserted.
|
||||
* - then, optional user filters (configured by psz_chain) are inserted.
|
||||
* - finaly, an optional record filter is inserted if b_record is true.
|
||||
* - optional user filters (configured by psz_chain) are inserted.
|
||||
* - an optional record filter is inserted if b_record is true.
|
||||
*
|
||||
* You must release the returned value using stream_Delete unless it is used as a
|
||||
* source to another filter.
|
||||
|
|
|
@ -73,21 +73,25 @@ stream_t *stream_FilterNew( stream_t *p_source,
|
|||
return s;
|
||||
}
|
||||
|
||||
/* Add automatic stream filter */
|
||||
stream_t *stream_FilterAutoNew( stream_t *p_source )
|
||||
{
|
||||
for( ;; )
|
||||
{
|
||||
stream_t *p_filter = stream_FilterNew( p_source, NULL );
|
||||
if( p_filter == NULL )
|
||||
break;
|
||||
|
||||
msg_Dbg( p_filter, "stream filter added to %p", p_source );
|
||||
p_source = p_filter;
|
||||
}
|
||||
return p_source;
|
||||
}
|
||||
|
||||
stream_t *stream_FilterChainNew( stream_t *p_source,
|
||||
const char *psz_chain,
|
||||
bool b_record )
|
||||
{
|
||||
/* Add auto stream filter */
|
||||
for( ;; )
|
||||
{
|
||||
stream_t *p_filter = stream_FilterNew( p_source, NULL );
|
||||
if( !p_filter )
|
||||
break;
|
||||
|
||||
msg_Dbg( p_filter, "Inserted a stream filter" );
|
||||
p_source = p_filter;
|
||||
}
|
||||
|
||||
/* Add user stream filter */
|
||||
char *psz_tmp = psz_chain ? strdup( psz_chain ) : NULL;
|
||||
char *psz = psz_tmp;
|
||||
|
|
Loading…
Reference in New Issue