예제 #1
0
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
}
예제 #2
0
파일: vlm.c 프로젝트: Aakash-729/vlc
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;
}
예제 #3
0
파일: vlm.c 프로젝트: FLYKingdom/vlc
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;
}
예제 #4
0
파일: vlm.c 프로젝트: FLYKingdom/vlc
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;
}
예제 #5
0
파일: vlm.c 프로젝트: FLYKingdom/vlc
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;
}