mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-12 13:44:56 +02:00
Added input_GetEsObjects() to cleanly retreive ES objects (decoder, vout, aout).
This commit is contained in:
parent
2baa89853c
commit
6a18a30adf
@ -511,6 +511,7 @@ enum input_query_e
|
||||
* XXX You must call vlc_object_release as soon as possible */
|
||||
INPUT_GET_AOUT, /* arg1=aout_instance_t ** res=can fail */
|
||||
INPUT_GET_VOUTS, /* arg1=vout_thread_t ***, int * res=can fail */
|
||||
INPUT_GET_ES_OBJECTS, /* arg1=int id, vlc_object_t **dec, vout_thread_t **, aout_instance_t ** */
|
||||
};
|
||||
|
||||
/** @}*/
|
||||
@ -598,6 +599,20 @@ static inline aout_instance_t *input_GetAout( input_thread_t *p_input )
|
||||
return input_Control( p_input, INPUT_GET_AOUT, &p_aout ) ? NULL : p_aout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the objects associated to an ES.
|
||||
*
|
||||
* You must release all non NULL object using vlc_object_release.
|
||||
* You may set pointer of pointer to NULL to avoid retreiving it.
|
||||
*/
|
||||
static inline int input_GetEsObjects( input_thread_t *p_input, int i_id,
|
||||
vlc_object_t **pp_decoder,
|
||||
vout_thread_t **pp_vout, aout_instance_t **pp_aout )
|
||||
{
|
||||
return input_Control( p_input, INPUT_GET_ES_OBJECTS, i_id,
|
||||
pp_decoder, pp_vout, pp_aout );
|
||||
}
|
||||
|
||||
/* */
|
||||
typedef struct input_clock_t input_clock_t;
|
||||
VLC_EXPORT( decoder_t *, input_DecoderNew, ( input_thread_t *, es_format_t *, input_clock_t *, sout_instance_t * ) );
|
||||
|
@ -29,10 +29,12 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
|
||||
#include "input_internal.h"
|
||||
#include "event.h"
|
||||
#include "resource.h"
|
||||
#include "es_out.h"
|
||||
|
||||
|
||||
static void UpdateBookmarksOption( input_thread_t * );
|
||||
@ -436,6 +438,17 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args )
|
||||
return VLC_SUCCESS;
|
||||
}
|
||||
|
||||
case INPUT_GET_ES_OBJECTS:
|
||||
{
|
||||
const int i_id = va_arg( args, int );
|
||||
vlc_object_t **pp_decoder = va_arg( args, vlc_object_t ** );
|
||||
vout_thread_t **pp_vout = va_arg( args, vout_thread_t ** );
|
||||
aout_instance_t **pp_aout = va_arg( args, aout_instance_t ** );
|
||||
|
||||
return es_out_Control( p_input->p->p_es_out_display, ES_OUT_GET_ES_OBJECTS_BY_ID, i_id,
|
||||
pp_decoder, pp_vout, pp_aout );
|
||||
}
|
||||
|
||||
default:
|
||||
msg_Err( p_input, "unknown query in input_vaControl" );
|
||||
return VLC_EGENERIC;
|
||||
|
Loading…
Reference in New Issue
Block a user