X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Finput%2Fcontrol.c;h=e1cd747e5caca03d2ad87fe5a4b8b3be5ef74454;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=450905b90bd2f445b3180c493cc037196740c7aa;hpb=2151d6fe01a3b730b6d241b561ce18f5cc424faf;p=vlc diff --git a/src/input/control.c b/src/input/control.c index 450905b90b..e1cd747e5c 100644 --- a/src/input/control.c +++ b/src/input/control.c @@ -29,10 +29,12 @@ #include #include +#include #include "input_internal.h" #include "event.h" #include "resource.h" +#include "es_out.h" static void UpdateBookmarksOption( input_thread_t * ); @@ -99,12 +101,13 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args ) case INPUT_GET_RATE: pi_int = (int*)va_arg( args, int * ); - *pi_int = var_GetInteger( p_input, "rate" ); + *pi_int = INPUT_RATE_DEFAULT / var_GetFloat( p_input, "rate" ); return VLC_SUCCESS; case INPUT_SET_RATE: i_int = (int)va_arg( args, int ); - return var_SetInteger( p_input, "rate", i_int ); + return var_SetFloat( p_input, "rate", + (float)INPUT_RATE_DEFAULT / (float)i_int ); case INPUT_GET_STATE: pi_int = (int*)va_arg( args, int * ); @@ -152,6 +155,20 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args ) input_SendEventMetaInfo( p_input ); return i_ret; } + case INPUT_REPLACE_INFOS: + case INPUT_MERGE_INFOS: + { + info_category_t *p_cat = va_arg( args, info_category_t * ); + + if( i_query == INPUT_REPLACE_INFOS ) + input_item_ReplaceInfos( p_input->p->p_item, p_cat ); + else + input_item_MergeInfos( p_input->p->p_item, p_cat ); + + if( !p_input->b_preparsing ) + input_SendEventMetaInfo( p_input ); + return VLC_SUCCESS; + } case INPUT_DEL_INFO: { char *psz_cat = (char *)va_arg( args, char * ); @@ -427,7 +444,7 @@ int input_vaControl( input_thread_t *p_input, int i_query, va_list args ) case INPUT_GET_VOUTS: { vout_thread_t ***ppp_vout = (vout_thread_t***)va_arg( args, vout_thread_t*** ); - int *pi_vout = (int*)va_arg( args, int* ); + size_t *pi_vout = va_arg( args, size_t * ); input_resource_HoldVouts( p_input->p->p_resource, ppp_vout, pi_vout ); if( *pi_vout <= 0 ) @@ -435,6 +452,31 @@ 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 ); + } + + case INPUT_GET_PCR_SYSTEM: + { + mtime_t *pi_system = va_arg( args, mtime_t * ); + mtime_t *pi_delay = va_arg( args, mtime_t * ); + return es_out_ControlGetPcrSystem( p_input->p->p_es_out_display, pi_system, pi_delay ); + } + + case INPUT_MODIFY_PCR_SYSTEM: + { + bool b_absolute = va_arg( args, int ); + mtime_t i_system = va_arg( args, mtime_t ); + return es_out_ControlModifyPcrSystem( p_input->p->p_es_out_display, b_absolute, i_system ); + } + default: msg_Err( p_input, "unknown query in input_vaControl" ); return VLC_EGENERIC;