⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rc.c

📁 uclinux 下的vlc播放器源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
    vlc_mutex_unlock( &p_intf->p_sys->status_lock );    return VLC_SUCCESS;}/******************************************************************** * Command routines ********************************************************************/static int Input( vlc_object_t *p_this, char const *psz_cmd,                  vlc_value_t oldval, vlc_value_t newval, void *p_data ){    intf_thread_t *p_intf = (intf_thread_t*)p_this;    input_thread_t *p_input;    vlc_value_t     val;    p_input = vlc_object_find( p_this, VLC_OBJECT_INPUT, FIND_ANYWHERE );    if( !p_input ) return VLC_ENOOBJ;    var_Get( p_input, "state", &val );    if( ( ( val.i_int == PAUSE_S ) || ( val.i_int == PLAYLIST_PAUSED ) ) &&        ( strcmp( psz_cmd, "pause" ) != 0 ) )    {        msg_rc( _("Press menu select or pause to continue.") );        vlc_object_release( p_input );        return VLC_EGENERIC;    }    /* Parse commands that only require an input */    if( !strcmp( psz_cmd, "pause" ) )    {        val.i_int = config_GetInt( p_intf, "key-play-pause" );        var_Set( p_intf->p_vlc, "key-pressed", val );        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if( !strcmp( psz_cmd, "seek" ) )    {        if( strlen( newval.psz_string ) > 0 &&            newval.psz_string[strlen( newval.psz_string ) - 1] == '%' )        {            val.f_float = (float)atoi( newval.psz_string ) / 100.0;            var_Set( p_input, "position", val );        }        else        {            val.i_time = ((int64_t)atoi( newval.psz_string )) * 1000000;            var_Set( p_input, "time", val );        }        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if ( !strcmp( psz_cmd, "fastforward" ) )    {        val.i_int = config_GetInt( p_intf, "key-jump+extrashort" );        var_Set( p_intf->p_vlc, "key-pressed", val );        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if ( !strcmp( psz_cmd, "rewind" ) )    {        val.i_int = config_GetInt( p_intf, "key-jump-extrashort" );        var_Set( p_intf->p_vlc, "key-pressed", val );        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if ( !strcmp( psz_cmd, "faster" ) )    {        val.b_bool = VLC_TRUE;        var_Set( p_input, "rate-faster", val );        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if ( !strcmp( psz_cmd, "slower" ) )    {        val.b_bool = VLC_TRUE;        var_Set( p_input, "rate-slower", val );        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if ( !strcmp( psz_cmd, "normal" ) )    {        val.i_int = INPUT_RATE_DEFAULT;        var_Set( p_input, "rate", val );        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if( !strcmp( psz_cmd, "chapter" ) ||             !strcmp( psz_cmd, "chapter_n" ) ||             !strcmp( psz_cmd, "chapter_p" ) )    {        if( !strcmp( psz_cmd, "chapter" ) )        {            if ( *newval.psz_string )            {                /* Set. */                val.i_int = atoi( newval.psz_string );                var_Set( p_input, "chapter", val );            }            else            {                vlc_value_t val_list;                /* Get. */                var_Get( p_input, "chapter", &val );                var_Change( p_input, "chapter", VLC_VAR_GETCHOICES,                            &val_list, NULL );                msg_rc( "Currently playing chapter %d/%d.",                        val.i_int, val_list.p_list->i_count );                var_Change( p_this, "chapter", VLC_VAR_FREELIST,                            &val_list, NULL );            }        }        else if( !strcmp( psz_cmd, "chapter_n" ) )        {            val.b_bool = VLC_TRUE;            var_Set( p_input, "next-chapter", val );        }        else if( !strcmp( psz_cmd, "chapter_p" ) )        {            val.b_bool = VLC_TRUE;            var_Set( p_input, "prev-chapter", val );        }        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if( !strcmp( psz_cmd, "title" ) ||             !strcmp( psz_cmd, "title_n" ) ||             !strcmp( psz_cmd, "title_p" ) )    {        if( !strcmp( psz_cmd, "title" ) )        {            if ( *newval.psz_string )            {                /* Set. */                val.i_int = atoi( newval.psz_string );                var_Set( p_input, "title", val );            }            else            {                vlc_value_t val_list;                /* Get. */                var_Get( p_input, "title", &val );                var_Change( p_input, "title", VLC_VAR_GETCHOICES,                            &val_list, NULL );                msg_rc( "Currently playing title %d/%d.",                        val.i_int, val_list.p_list->i_count );                var_Change( p_this, "title", VLC_VAR_FREELIST,                            &val_list, NULL );            }        }        else if( !strcmp( psz_cmd, "title_n" ) )        {            val.b_bool = VLC_TRUE;            var_Set( p_input, "next-title", val );        }        else if( !strcmp( psz_cmd, "title_p" ) )        {            val.b_bool = VLC_TRUE;            var_Set( p_input, "prev-title", val );        }        vlc_object_release( p_input );        return VLC_SUCCESS;    }    else if(    !strcmp( psz_cmd, "atrack" )             || !strcmp( psz_cmd, "vtrack" )             || !strcmp( psz_cmd, "strack" ) )    {        char *psz_variable;        vlc_value_t val_name;        int i_error;        if( !strcmp( psz_cmd, "atrack" ) )        {            psz_variable = "audio-es";        }        else if( !strcmp( psz_cmd, "vtrack" ) )        {            psz_variable = "video-es";        }        else        {            psz_variable = "spu-es";        }        /* Get the descriptive name of the variable */        var_Change( p_input, psz_variable, VLC_VAR_GETTEXT,                     &val_name, NULL );        if( !val_name.psz_string ) val_name.psz_string = strdup(psz_variable);        if( newval.psz_string && *newval.psz_string )        {            /* set */            vlc_value_t val;            val.i_int = atoi( newval.psz_string );            i_error = var_Set( p_input, psz_variable, val );        }        else        {            /* get */            vlc_value_t val, text;            int i, i_value;            if ( var_Get( p_input, psz_variable, &val ) < 0 )            {                vlc_object_release( p_input );                return VLC_EGENERIC;            }            i_value = val.i_int;            if ( var_Change( p_input, psz_variable,                             VLC_VAR_GETLIST, &val, &text ) < 0 )            {                vlc_object_release( p_input );                return VLC_EGENERIC;            }            msg_rc( "+----[ %s ]", val_name.psz_string );            for ( i = 0; i < val.p_list->i_count; i++ )            {                if ( i_value == val.p_list->p_values[i].i_int )                    msg_rc( "| %i - %s *", val.p_list->p_values[i].i_int,                            text.p_list->p_values[i].psz_string );                else                    msg_rc( "| %i - %s", val.p_list->p_values[i].i_int,                            text.p_list->p_values[i].psz_string );            }            var_Change( p_input, psz_variable, VLC_VAR_FREELIST,                        &val, &text );            msg_rc( "+----[ end of %s ]", val_name.psz_string );            if( val_name.psz_string ) free( val_name.psz_string );            i_error = VLC_SUCCESS;        }        vlc_object_release( p_input );        return i_error;    }    /* Never reached. */    vlc_object_release( p_input );    return VLC_EGENERIC;}static int Playlist( vlc_object_t *p_this, char const *psz_cmd,                     vlc_value_t oldval, vlc_value_t newval, void *p_data ){    vlc_value_t val;    intf_thread_t *p_intf = (intf_thread_t*)p_this;    playlist_t *p_playlist;    p_playlist = vlc_object_find( p_this, VLC_OBJECT_PLAYLIST,                                           FIND_ANYWHERE );    if( !p_playlist )    {        return VLC_ENOOBJ;    }    if( p_playlist->p_input )    {        vlc_value_t val;        var_Get( p_playlist->p_input, "state", &val );        if( ( val.i_int == PAUSE_S ) || ( val.i_int == PLAYLIST_PAUSED ) )        {            msg_rc( _("Type 'menu select' or 'pause' to continue.") );            vlc_object_release( p_playlist );            return VLC_EGENERIC;        }    }    /* Parse commands that require a playlist */    if( !strcmp( psz_cmd, "prev" ) )    {        playlist_Prev( p_playlist );    }    else if( !strcmp( psz_cmd, "next" ) )    {        playlist_Next( p_playlist );    }    else if( !strcmp( psz_cmd, "play" ) )    {        if( p_playlist->p_input )        {            vlc_value_t val;            var_Get( p_playlist->p_input, "rate", &val );            if( val.i_int != INPUT_RATE_DEFAULT )            {                val.i_int = INPUT_RATE_DEFAULT;                var_Set( p_playlist->p_input, "rate", val );            }            else            {                playlist_Play( p_playlist );            }        }    }    else if (!strcmp( psz_cmd, "goto" ) )    {        if( strlen( newval.psz_string ) > 0)        {            val.i_int = atoi( newval.psz_string );            playlist_Goto( p_playlist, val.i_int);        }    }    else if( !strcmp( psz_cmd, "stop" ) )    {        playlist_Stop( p_playlist );    }    else if( !strcmp( psz_cmd, "clear" ) )    {        playlist_Stop( p_playlist );        vlc_mutex_lock( &p_playlist->object_lock );        playlist_Clear( p_playlist );        vlc_mutex_unlock( &p_playlist->object_lock );    }    else if( !strcmp( psz_cmd, "add" ) &&             newval.psz_string && *newval.psz_string )    {        playlist_item_t *p_item = parse_MRL( p_intf, newval.psz_string );        if( p_item )        {            msg_rc( "Trying to add %s to playlist.", newval.psz_string );            playlist_AddItem( p_playlist, p_item,                              PLAYLIST_GO|PLAYLIST_APPEND, PLAYLIST_END );        }    }    else if( !strcmp( psz_cmd, "enqueue" ) &&             newval.psz_string && *newval.psz_string )    {        playlist_item_t *p_item = parse_MRL( p_intf, newval.psz_string );        if( p_item )        {            msg_rc( "trying to enqueue %s to playlist", newval.psz_string );            playlist_AddItem( p_playlist, p_item,                              PLAYLIST_APPEND, PLAYLIST_END );        }    }    else if( !strcmp( psz_cmd, "playlist" ) )    {        int i;        for ( i = 0; i < p_playlist->i_size; i++ )        {            msg_rc( "|%s%s   %s|%s|", i == p_playlist->i_index ? "*" : " ",                    p_playlist->pp_items[i]->input.psz_name,                    p_playlist->pp_items[i]->input.psz_uri,                    p_playlist->pp_items[i]->i_parents > 0 ?                    p_playlist->pp_items[i]->pp_parents[0]->p_parent->input.psz_name : "" );        }        if ( i == 0 )        {            msg_rc( "| no entries" );        }    }    else if( !strcmp( psz_cmd, "status" ) )    {        if( p_playlist->p_input )        {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -