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

📄 osd.c

📁 uclinux 下的vlc播放器源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,                p_button->p_current_state->p_pic );        osd_SetMenuUpdate( p_osd, VLC_TRUE );        osd_SetMenuVisible( p_osd, VLC_TRUE );        osd_SetKeyPressed( VLC_OBJECT(p_osd->p_vlc), config_GetInt( p_osd, p_button->psz_action ) );#if defined(OSD_MENU_DEBUG)        msg_Dbg( p_osd, "select (%d, %s)", config_GetInt( p_osd, p_button->psz_action ), p_button->psz_action );#endif    }    vlc_object_release( (vlc_object_t*) p_osd );    vlc_mutex_unlock( lockval.p_address );}void __osd_MenuNext( vlc_object_t *p_this ){    osd_menu_t *p_osd = NULL;    osd_button_t *p_button = NULL;    vlc_value_t lockval;    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )    {        msg_Err( p_this, "osd_MenuNext failed" );        return;    }    if( osd_isVisible( p_osd ) == VLC_FALSE )    {        vlc_object_release( (vlc_object_t*) p_osd );        return;    }    var_Get( p_this->p_libvlc, "osd_mutex", &lockval );    vlc_mutex_lock( lockval.p_address );    p_button = p_osd->p_state->p_visible;    if( p_button )    {        if( !p_button->b_range )             p_button->p_current_state = osd_StateChange( p_button->p_states, OSD_BUTTON_UNSELECT );        if( p_button->p_next )            p_osd->p_state->p_visible = p_button->p_next;        else            p_osd->p_state->p_visible = p_osd->p_button;        if( !p_osd->p_state->p_visible->b_range )             p_osd->p_state->p_visible->p_current_state =                osd_StateChange( p_osd->p_state->p_visible->p_states, OSD_BUTTON_SELECT );        osd_UpdateState( p_osd->p_state,                 p_osd->p_state->p_visible->i_x, p_osd->p_state->p_visible->i_y,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,                p_osd->p_state->p_visible->p_current_state->p_pic );        osd_SetMenuUpdate( p_osd, VLC_TRUE );    }#if defined(OSD_MENU_DEBUG)    msg_Dbg( p_osd, "direction right [button %s]", p_osd->p_state->p_visible->psz_action );#endif    vlc_object_release( (vlc_object_t*) p_osd );    vlc_mutex_unlock( lockval.p_address );}void __osd_MenuPrev( vlc_object_t *p_this ){    osd_menu_t *p_osd = NULL;    osd_button_t *p_button = NULL;    vlc_value_t lockval;    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )    {        msg_Err( p_this, "osd_MenuPrev failed" );        return;    }    if( osd_isVisible( p_osd ) == VLC_FALSE )    {        vlc_object_release( (vlc_object_t*) p_osd );        return;    }    var_Get( p_this->p_libvlc, "osd_mutex", &lockval );    vlc_mutex_lock( lockval.p_address );    p_button = p_osd->p_state->p_visible;    if( p_button )    {        if( !p_button->b_range )             p_button->p_current_state = osd_StateChange( p_button->p_states, OSD_BUTTON_UNSELECT );        if( p_button->p_prev )            p_osd->p_state->p_visible = p_button->p_prev;        else            p_osd->p_state->p_visible = p_osd->p_last_button;        if( !p_osd->p_state->p_visible->b_range )             p_osd->p_state->p_visible->p_current_state =                osd_StateChange( p_osd->p_state->p_visible->p_states, OSD_BUTTON_SELECT );        osd_UpdateState( p_osd->p_state,                 p_osd->p_state->p_visible->i_x, p_osd->p_state->p_visible->i_y,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,                p_osd->p_state->p_visible->p_current_state->p_pic );        osd_SetMenuUpdate( p_osd, VLC_TRUE );    }#if defined(OSD_MENU_DEBUG)    msg_Dbg( p_osd, "direction left [button %s]", p_osd->p_state->p_visible->psz_action );#endif    vlc_object_release( (vlc_object_t*) p_osd );    vlc_mutex_unlock( lockval.p_address );}void __osd_MenuUp( vlc_object_t *p_this ){    osd_menu_t *p_osd = NULL;    osd_button_t *p_button = NULL;    vlc_value_t lockval;#if defined(OSD_MENU_DEBUG)    vlc_value_t val;#endif    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )    {        msg_Err( p_this, "osd_MenuDown failed" );        return;    }    if( osd_isVisible( p_osd ) == VLC_FALSE )    {        vlc_object_release( (vlc_object_t*) p_osd );        return;    }    var_Get( p_this->p_libvlc, "osd_mutex", &lockval );    vlc_mutex_lock( lockval.p_address );    p_button = p_osd->p_state->p_visible;    if( p_button )    {        if( !p_button->b_range )         {            p_button->p_current_state = osd_StateChange( p_button->p_states, OSD_BUTTON_SELECT );            if( p_button->p_up )                p_osd->p_state->p_visible = p_button->p_up;        }        if( p_button->b_range && p_osd->p_state->p_visible->b_range )         {            osd_state_t *p_temp = p_osd->p_state->p_visible->p_current_state;            if( p_temp && p_temp->p_next )                p_osd->p_state->p_visible->p_current_state = p_temp->p_next;        }        else if( !p_osd->p_state->p_visible->b_range )        {            p_osd->p_state->p_visible->p_current_state =                osd_StateChange( p_osd->p_state->p_visible->p_states, OSD_BUTTON_SELECT );        }        osd_UpdateState( p_osd->p_state,                 p_osd->p_state->p_visible->i_x, p_osd->p_state->p_visible->i_y,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,                p_osd->p_state->p_visible->p_current_state->p_pic );        osd_SetMenuUpdate( p_osd, VLC_TRUE );        /* If this is a range style action with associated images of only one state,             * then perform "menu select" on every menu navigation            */        if( p_button->b_range )         {            osd_SetKeyPressed( VLC_OBJECT(p_osd->p_vlc), config_GetInt(p_osd, p_button->psz_action) );#if defined(OSD_MENU_DEBUG)            msg_Dbg( p_osd, "select (%d, %s)", val.i_int, p_button->psz_action );#endif        }    }#if defined(OSD_MENU_DEBUG)    msg_Dbg( p_osd, "direction up [button %s]", p_osd->p_state->p_visible->psz_action );#endif    vlc_object_release( (vlc_object_t*) p_osd );    vlc_mutex_unlock( lockval.p_address );}void __osd_MenuDown( vlc_object_t *p_this ){    osd_menu_t *p_osd = NULL;    osd_button_t *p_button = NULL;    vlc_value_t lockval;#if defined(OSD_MENU_DEBUG)    vlc_value_t val;#endif    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )    {        msg_Err( p_this, "osd_MenuDown failed" );        return;    }    if( osd_isVisible( p_osd ) == VLC_FALSE )    {        vlc_object_release( (vlc_object_t*) p_osd );        return;    }    var_Get( p_this->p_libvlc, "osd_mutex", &lockval );    vlc_mutex_lock( lockval.p_address );    p_button = p_osd->p_state->p_visible;    if( p_button )    {        if( !p_button->b_range )         {            p_button->p_current_state = osd_StateChange( p_button->p_states, OSD_BUTTON_SELECT );            if( p_button->p_down )                p_osd->p_state->p_visible = p_button->p_down;        }        if( p_button->b_range && p_osd->p_state->p_visible->b_range )         {            osd_state_t *p_temp = p_osd->p_state->p_visible->p_current_state;            if( p_temp && p_temp->p_prev )                p_osd->p_state->p_visible->p_current_state = p_temp->p_prev;        }        else if( !p_osd->p_state->p_visible->b_range )        {            p_osd->p_state->p_visible->p_current_state =                osd_StateChange( p_osd->p_state->p_visible->p_states, OSD_BUTTON_SELECT );        }        osd_UpdateState( p_osd->p_state,                 p_osd->p_state->p_visible->i_x, p_osd->p_state->p_visible->i_y,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,                p_osd->p_state->p_visible->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,                p_osd->p_state->p_visible->p_current_state->p_pic );        osd_SetMenuUpdate( p_osd, VLC_TRUE );        /* If this is a range style action with associated images of only one state,         * then perform "menu select" on every menu navigation         */        if( p_button->b_range )         {            osd_SetKeyPressed( VLC_OBJECT(p_osd->p_vlc), config_GetInt(p_osd, p_button->psz_action_down) );#if defined(OSD_MENU_DEBUG)            msg_Dbg( p_osd, "select (%d, %s)", val.i_int, p_button->psz_action_down );#endif        }    }#if defined(OSD_MENU_DEBUG)    msg_Dbg( p_osd, "direction down [button %s]", p_osd->p_state->p_visible->psz_action ); #endif    vlc_object_release( (vlc_object_t*) p_osd );    vlc_mutex_unlock( lockval.p_address );}static int osd_VolumeStep( vlc_object_t *p_this, int i_volume, int i_steps ){    int i_volume_step = 0;    i_volume_step = config_GetInt( p_this->p_vlc, "volume-step" );    return (i_volume/i_volume_step);}/** * Display current audio volume bitmap * * The OSD Menu audio volume bar is updated to reflect the new audio volume. Call this function * when the audio volume is updated outside the OSD menu command "menu up", "menu down" or "menu select". */void __osd_Volume( vlc_object_t *p_this ){    osd_menu_t *p_osd = NULL;    osd_button_t *p_button = NULL;    vlc_value_t lockval;    int i_volume = 0;    int i_steps = 0;    if( ( p_osd = vlc_object_find( p_this, VLC_OBJECT_OSDMENU, FIND_ANYWHERE ) ) == NULL )    {        msg_Err( p_this, "OSD menu volume update failed" );        return;    }    var_Get( p_this->p_libvlc, "osd_mutex", &lockval );    vlc_mutex_lock( lockval.p_address );    p_button = p_osd->p_state->p_volume;    if( p_osd->p_state->p_volume )         p_osd->p_state->p_visible = p_osd->p_state->p_volume;    if( p_button && p_button->b_range )    {        /* Update the volume state images to match the current volume */        i_volume = config_GetInt( p_this, "volume" );        i_steps = osd_VolumeStep( p_this, i_volume, p_button->i_ranges );        p_button->p_current_state = osd_VolumeStateChange( p_button->p_states, i_steps );        osd_UpdateState( p_osd->p_state,                p_button->i_x, p_button->i_y,                p_button->p_current_state->p_pic->p[Y_PLANE].i_visible_pitch,                p_button->p_current_state->p_pic->p[Y_PLANE].i_visible_lines,                p_button->p_current_state->p_pic );        osd_SetMenuUpdate( p_osd, VLC_TRUE );        osd_SetMenuVisible( p_osd, VLC_TRUE );    }    vlc_object_release( (vlc_object_t*) p_osd );    vlc_mutex_unlock( lockval.p_address );}

⌨️ 快捷键说明

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