static vlm_media_instance_t *libvlc_vlm_get_media_instance( libvlc_instance_t *p_instance, char *psz_name, int i_minstance_idx, libvlc_exception_t *p_exception ) { #ifdef ENABLE_VLM vlm_t *p_vlm; vlm_media_instance_t **pp_minstance; vlm_media_instance_t *p_minstance; int i_minstance; int64_t id; VLM_RET(p_vlm, NULL); if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || vlm_Control( p_vlm, VLM_GET_MEDIA_INSTANCES, id, &pp_minstance, &i_minstance ) ) { libvlc_exception_raise( p_exception, "Unable to get %s instances", psz_name ); return NULL; } p_minstance = NULL; if( i_minstance_idx >= 0 && i_minstance_idx < i_minstance ) { p_minstance = pp_minstance[i_minstance_idx]; TAB_REMOVE( i_minstance, pp_minstance, p_minstance ); } while( i_minstance > 0 ) vlm_media_instance_Delete( pp_minstance[--i_minstance] ); TAB_CLEAN( i_minstance, pp_minstance ); return p_minstance; #else libvlc_exception_raise( p_exception, "VLM has been disabled in this libvlc." ); return VLC_EGENERIC; #endif }
static vlm_media_instance_t * libvlc_vlm_get_media_instance( libvlc_instance_t *p_instance, const char *psz_name, int i_minstance_idx ) { vlm_t *p_vlm; vlm_media_instance_t **pp_minstance; vlm_media_instance_t *p_minstance; int i_minstance; int64_t id; VLM_RET(p_vlm, NULL); if( vlm_Control( p_vlm, VLM_GET_MEDIA_ID, psz_name, &id ) || vlm_Control( p_vlm, VLM_GET_MEDIA_INSTANCES, id, &pp_minstance, &i_minstance ) ) { libvlc_printerr( "%s: media instances not found", psz_name ); return NULL; } p_minstance = NULL; if( i_minstance_idx >= 0 && i_minstance_idx < i_minstance ) { p_minstance = pp_minstance[i_minstance_idx]; TAB_REMOVE( i_minstance, pp_minstance, p_minstance ); } while( i_minstance > 0 ) vlm_media_instance_Delete( pp_minstance[--i_minstance] ); TAB_CLEAN( i_minstance, pp_minstance ); return p_minstance; }
int libvlc_vlm_get_media_instance_title( libvlc_instance_t *p_instance, const char *psz_name, int i_instance, libvlc_exception_t *p_exception ) { vlm_media_instance_t *p_mi; p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance, p_exception ); if( p_mi ) vlm_media_instance_Delete( p_mi ); return p_mi ? 0 : -1; }
int libvlc_vlm_get_media_instance_rate( libvlc_instance_t *p_instance, const char *psz_name, int i_instance, libvlc_exception_t *p_exception ) { vlm_media_instance_t *p_mi; int result = -1; p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance, p_exception ); if( p_mi ) { result = p_mi->i_rate; vlm_media_instance_Delete( p_mi ); } return result; }
float libvlc_vlm_get_media_instance_position( libvlc_instance_t *p_instance, const char *psz_name, int i_instance, libvlc_exception_t *p_exception ) { vlm_media_instance_t *p_mi; float result = -1.; p_mi = libvlc_vlm_get_media_instance( p_instance, psz_name, i_instance, p_exception ); if( p_mi ) { result = p_mi->d_position; vlm_media_instance_Delete( p_mi ); } return result; }