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

📄 var.c

📁 VLC Player Source Code
💻 C
📖 第 1 页 / 共 2 页
字号:
                continue;        }        else        {            text.psz_string = strdup( t->seekpoint[i]->psz_name );        }        var_Change( p_input, "chapter", VLC_VAR_ADDCHOICE, &val, &text );        free( text.psz_string );    }}/***************************************************************************** * input_ConfigVarInit: *  Create all config object variables *****************************************************************************/void input_ConfigVarInit ( input_thread_t *p_input ){    vlc_value_t val;    /* Create Object Variables for private use only */    if( !p_input->b_preparsing )    {        var_Create( p_input, "video", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );        var_Create( p_input, "audio", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );        var_Create( p_input, "spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );        var_Create( p_input, "audio-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );        var_Create( p_input, "sub-track", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );        var_Create( p_input, "audio-language",                    VLC_VAR_STRING|VLC_VAR_DOINHERIT );        var_Create( p_input, "sub-language",                    VLC_VAR_STRING|VLC_VAR_DOINHERIT );        var_Create( p_input, "audio-track-id",                    VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );        var_Create( p_input, "sub-track-id",                    VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );        var_Create( p_input, "sub-file", VLC_VAR_FILE | VLC_VAR_DOINHERIT );        var_Create( p_input, "sub-autodetect-file", VLC_VAR_BOOL |                    VLC_VAR_DOINHERIT );        var_Create( p_input, "sub-autodetect-path", VLC_VAR_STRING |                    VLC_VAR_DOINHERIT );        var_Create( p_input, "sub-autodetect-fuzzy", VLC_VAR_INTEGER |                    VLC_VAR_DOINHERIT );        var_Create( p_input, "sout", VLC_VAR_STRING | VLC_VAR_DOINHERIT );        var_Create( p_input, "sout-all",   VLC_VAR_BOOL | VLC_VAR_DOINHERIT );        var_Create( p_input, "sout-audio", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );        var_Create( p_input, "sout-video", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );        var_Create( p_input, "sout-spu", VLC_VAR_BOOL | VLC_VAR_DOINHERIT );        var_Create( p_input, "sout-keep",  VLC_VAR_BOOL | VLC_VAR_DOINHERIT );        var_Create( p_input, "input-repeat",                    VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );        var_Create( p_input, "start-time", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );        var_Create( p_input, "stop-time", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );        var_Create( p_input, "run-time", VLC_VAR_INTEGER|VLC_VAR_DOINHERIT );        var_Create( p_input, "input-slave",                    VLC_VAR_STRING | VLC_VAR_DOINHERIT );        var_Create( p_input, "minimize-threads",                    VLC_VAR_BOOL|VLC_VAR_DOINHERIT );        var_Create( p_input, "audio-desync",                    VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );        var_Create( p_input, "cr-average",                    VLC_VAR_INTEGER | VLC_VAR_DOINHERIT );        var_Create( p_input, "clock-synchro",                    VLC_VAR_INTEGER | VLC_VAR_DOINHERIT);    }    var_Create( p_input, "seekable", VLC_VAR_BOOL );    val.b_bool = true; /* Fixed later*/    var_Change( p_input, "seekable", VLC_VAR_SETVALUE, &val, NULL );    var_Create( p_input, "can-pause", VLC_VAR_BOOL );    val.b_bool = true; /* Fixed later*/    var_Change( p_input, "can-pause", VLC_VAR_SETVALUE, &val, NULL );    var_Create( p_input, "teletext-es", VLC_VAR_INTEGER );    var_SetInteger( p_input, "teletext-es", -1 );    /* */    var_Create( p_input, "access-filter", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    var_Create( p_input, "access", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    var_Create( p_input, "demux", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    /* Meta */    var_Create( p_input, "meta-title", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    var_Create( p_input, "meta-author", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    var_Create( p_input, "meta-artist", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    var_Create( p_input, "meta-genre", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    var_Create( p_input, "meta-copyright", VLC_VAR_STRING | VLC_VAR_DOINHERIT);    var_Create( p_input, "meta-description", VLC_VAR_STRING|VLC_VAR_DOINHERIT);    var_Create( p_input, "meta-date", VLC_VAR_STRING | VLC_VAR_DOINHERIT );    var_Create( p_input, "meta-url", VLC_VAR_STRING | VLC_VAR_DOINHERIT );}/***************************************************************************** * Callbacks managements: *****************************************************************************/static void InputAddCallbacks( input_thread_t *p_input,                               const vlc_input_callback_t *p_callbacks ){    int i;    for( i = 0; p_callbacks[i].psz_name != NULL; i++ )        var_AddCallback( p_input,                         p_callbacks[i].psz_name,                         p_callbacks[i].callback, NULL );}static void InputDelCallbacks( input_thread_t *p_input,                               const vlc_input_callback_t *p_callbacks ){    int i;    for( i = 0; p_callbacks[i].psz_name != NULL; i++ )        var_DelCallback( p_input,                         p_callbacks[i].psz_name,                         p_callbacks[i].callback, NULL );}/***************************************************************************** * All Callbacks: *****************************************************************************/static int StateCallback( vlc_object_t *p_this, char const *psz_cmd,                          vlc_value_t oldval, vlc_value_t newval,                          void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); VLC_UNUSED(p_data);    if( newval.i_int == PLAYING_S || newval.i_int == PAUSE_S )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_STATE, &newval );        return VLC_SUCCESS;    }    return VLC_EGENERIC;}static int RateCallback( vlc_object_t *p_this, char const *psz_cmd,                         vlc_value_t oldval, vlc_value_t newval, void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    VLC_UNUSED(oldval); VLC_UNUSED(p_data);    /* Problem with this way: the "rate" variable is update after the input thread do the change */    if( !strcmp( psz_cmd, "rate-slower" ) )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_RATE_SLOWER, NULL );    }    else if( !strcmp( psz_cmd, "rate-faster" ) )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_RATE_FASTER, NULL );    }    else    {        input_ControlPush( p_input, INPUT_CONTROL_SET_RATE, &newval );    }    return VLC_SUCCESS;}static int PositionCallback( vlc_object_t *p_this, char const *psz_cmd,                             vlc_value_t oldval, vlc_value_t newval,                             void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    vlc_value_t val, length;    VLC_UNUSED(oldval); VLC_UNUSED(p_data);    if( !strcmp( psz_cmd, "position-offset" ) )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_POSITION_OFFSET, &newval );        val.f_float = var_GetFloat( p_input, "position" ) + newval.f_float;        if( val.f_float < 0.0 ) val.f_float = 0.0;        if( val.f_float > 1.0 ) val.f_float = 1.0;        var_Change( p_input, "position", VLC_VAR_SETVALUE, &val, NULL );    }    else    {        val.f_float = newval.f_float;        input_ControlPush( p_input, INPUT_CONTROL_SET_POSITION, &newval );    }    /* Update "position" for better intf behavour */    var_Get( p_input, "length", &length );    if( length.i_time > 0 && val.f_float >= 0.0 && val.f_float <= 1.0 )    {        val.i_time = length.i_time * val.f_float;        var_Change( p_input, "time", VLC_VAR_SETVALUE, &val, NULL );    }    return VLC_SUCCESS;}static int TimeCallback( vlc_object_t *p_this, char const *psz_cmd,                         vlc_value_t oldval, vlc_value_t newval, void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    vlc_value_t val, length;    VLC_UNUSED(oldval); VLC_UNUSED(p_data);    if( !strcmp( psz_cmd, "time-offset" ) )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_TIME_OFFSET, &newval );        val.i_time = var_GetTime( p_input, "time" ) + newval.i_time;        if( val.i_time < 0 ) val.i_time = 0;        /* TODO maybe test against i_length ? */        var_Change( p_input, "time", VLC_VAR_SETVALUE, &val, NULL );    }    else    {        val.i_time = newval.i_time;        input_ControlPush( p_input, INPUT_CONTROL_SET_TIME, &newval );    }    /* Update "position" for better intf behavour */    var_Get( p_input, "length", &length );    if( length.i_time > 0 && val.i_time >= 0 && val.i_time <= length.i_time )    {        val.f_float = (double)val.i_time/(double)length.i_time;        var_Change( p_input, "position", VLC_VAR_SETVALUE, &val, NULL );    }    return VLC_SUCCESS;}static int ProgramCallback( vlc_object_t *p_this, char const *psz_cmd,                            vlc_value_t oldval, vlc_value_t newval,                            void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); VLC_UNUSED(p_data);    input_ControlPush( p_input, INPUT_CONTROL_SET_PROGRAM, &newval );    return VLC_SUCCESS;}static int TitleCallback( vlc_object_t *p_this, char const *psz_cmd,                          vlc_value_t oldval, vlc_value_t newval,                          void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    vlc_value_t val, count;    VLC_UNUSED(oldval); VLC_UNUSED(p_data);    if( !strcmp( psz_cmd, "next-title" ) )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_TITLE_NEXT, NULL );        val.i_int = var_GetInteger( p_input, "title" ) + 1;        var_Change( p_input, "title", VLC_VAR_CHOICESCOUNT, &count, NULL );        if( val.i_int < count.i_int )            var_Change( p_input, "title", VLC_VAR_SETVALUE, &val, NULL );    }    else if( !strcmp( psz_cmd, "prev-title" ) )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_TITLE_PREV, NULL );        val.i_int = var_GetInteger( p_input, "title" ) - 1;        if( val.i_int >= 0 )            var_Change( p_input, "title", VLC_VAR_SETVALUE, &val, NULL );    }    else    {        input_ControlPush( p_input, INPUT_CONTROL_SET_TITLE, &newval );    }    return VLC_SUCCESS;}static int SeekpointCallback( vlc_object_t *p_this, char const *psz_cmd,                              vlc_value_t oldval, vlc_value_t newval,                              void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    vlc_value_t val, count;    VLC_UNUSED(oldval); VLC_UNUSED(p_data);    if( !strcmp( psz_cmd, "next-chapter" ) )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_SEEKPOINT_NEXT, NULL );        val.i_int = var_GetInteger( p_input, "chapter" ) + 1;        var_Change( p_input, "chapter", VLC_VAR_CHOICESCOUNT, &count, NULL );        if( val.i_int < count.i_int )            var_Change( p_input, "chapter", VLC_VAR_SETVALUE, &val, NULL );    }    else if( !strcmp( psz_cmd, "prev-chapter" ) )    {        input_ControlPush( p_input, INPUT_CONTROL_SET_SEEKPOINT_PREV, NULL );        val.i_int = var_GetInteger( p_input, "chapter" ) - 1;        if( val.i_int >= 0 )            var_Change( p_input, "chapter", VLC_VAR_SETVALUE, &val, NULL );    }    else    {        input_ControlPush( p_input, INPUT_CONTROL_SET_SEEKPOINT, &newval );    }    return VLC_SUCCESS;}static int NavigationCallback( vlc_object_t *p_this, char const *psz_cmd,                               vlc_value_t oldval, vlc_value_t newval,                               void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    vlc_value_t     val;    VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval);    /* Issue a title change */    val.i_int = (intptr_t)p_data;    input_ControlPush( p_input, INPUT_CONTROL_SET_TITLE, &val );    var_Change( p_input, "title", VLC_VAR_SETVALUE, &val, NULL );    /* And a chapter change */    input_ControlPush( p_input, INPUT_CONTROL_SET_SEEKPOINT, &newval );    var_Change( p_input, "chapter", VLC_VAR_SETVALUE, &newval, NULL );    return VLC_SUCCESS;}static int ESCallback( vlc_object_t *p_this, char const *psz_cmd,                       vlc_value_t oldval, vlc_value_t newval, void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    VLC_UNUSED(oldval); VLC_UNUSED(p_data);    if( newval.i_int < 0 )    {        vlc_value_t v;        /* Hack */        if( !strcmp( psz_cmd, "audio-es" ) )            v.i_int = -AUDIO_ES;        else if( !strcmp( psz_cmd, "video-es" ) )            v.i_int = -VIDEO_ES;        else if( !strcmp( psz_cmd, "spu-es" ) )            v.i_int = -SPU_ES;        else            v.i_int = 0;        if( v.i_int != 0 )            input_ControlPush( p_input, INPUT_CONTROL_SET_ES, &v );    }    else    {        input_ControlPush( p_input, INPUT_CONTROL_SET_ES, &newval );    }    return VLC_SUCCESS;}static int EsDelayCallback ( vlc_object_t *p_this, char const *psz_cmd,                             vlc_value_t oldval, vlc_value_t newval, void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    VLC_UNUSED(oldval); VLC_UNUSED(p_data);    if( !strcmp( psz_cmd, "audio-delay" ) )    {        /*Change i_pts_delay to make sure es are decoded in time*/        if (newval.i_int < 0 || oldval.i_int < 0 )        {            p_input->i_pts_delay -= newval.i_int - oldval.i_int;        }        input_ControlPush( p_input, INPUT_CONTROL_SET_AUDIO_DELAY, &newval );    }    else if( !strcmp( psz_cmd, "spu-delay" ) )        input_ControlPush( p_input, INPUT_CONTROL_SET_SPU_DELAY, &newval );    return VLC_SUCCESS;}static int BookmarkCallback( vlc_object_t *p_this, char const *psz_cmd,                             vlc_value_t oldval, vlc_value_t newval,                             void *p_data ){    input_thread_t *p_input = (input_thread_t*)p_this;    VLC_UNUSED(psz_cmd); VLC_UNUSED(oldval); VLC_UNUSED(p_data);    input_ControlPush( p_input, INPUT_CONTROL_SET_BOOKMARK, &newval );    return VLC_SUCCESS;}

⌨️ 快捷键说明

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