亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? pda_callbacks.c

?? VLC Player Source Code
?? C
?? 第 1 頁 / 共 3 頁
字號:
        GtkTreeModel *p_model;        GtkTreeIter   iter;        int           i_row;        int           i_skip;        /* This might be a directory selection */        p_model = gtk_tree_view_get_model(treeview);        if (!p_model)        {            msg_Err(p_intf, "PDA: Playlist model contains a NULL pointer\n" );            return;        }        if (!gtk_tree_model_get_iter(p_model, &iter, path))        {            msg_Err( p_intf, "PDA: Playlist could not get iter from model" );            return;        }        gtk_tree_model_get(p_model, &iter, 2, &i_row, -1);        i_skip = i_row - p_playlist->i_current_index;        playlist_Skip( p_playlist, i_skip );    }    pl_Release( p_intf );}void onUpdatePlaylist(GtkButton *button, gpointer user_data){    intf_thread_t *  p_intf = GtkGetIntf( button );    playlist_t * p_playlist = pl_Yield( p_intf );    GtkTreeView *p_tvplaylist = NULL;    if( p_playlist == NULL )    {        return;    }    p_tvplaylist = (GtkTreeView*) lookup_widget( GTK_WIDGET(button), "tvPlaylist");    if (p_tvplaylist)    {        GtkListStore *p_model = NULL;        /* Rebuild the playlist then. */        p_model = gtk_list_store_new (3,                    G_TYPE_STRING, /* Filename */                    G_TYPE_STRING, /* Time */                    G_TYPE_UINT);  /* Hidden field */        if (p_model)        {            PlaylistRebuildListStore(p_intf, p_model, p_playlist);            gtk_tree_view_set_model(GTK_TREE_VIEW(p_tvplaylist), GTK_TREE_MODEL(p_model));            g_object_unref(p_model);        }    }    pl_Release( p_intf );}static void deleteItemFromPlaylist(gpointer data, gpointer user_data){    gtk_tree_path_free((GtkTreePath*) data); // removing an item.}void onDeletePlaylist(GtkButton *button, gpointer user_data){    intf_thread_t *p_intf = GtkGetIntf( button );    playlist_t * p_playlist = pl_Yield( p_intf );    GtkTreeView    *p_tvplaylist;    /* Delete an arbitrary item from the playlist */    p_tvplaylist = (GtkTreeView *) lookup_widget( GTK_WIDGET(button), "tvPlaylist" );    if (p_tvplaylist != NULL)    {        GList *p_rows = NULL;        GList *p_node;        GtkTreeModel *p_model = NULL;        GtkListStore *p_store = NULL;        GtkTreeSelection *p_selection = gtk_tree_view_get_selection(p_tvplaylist);        p_model = gtk_tree_view_get_model(p_tvplaylist);        if (p_model)        {            p_rows = gtk_tree_selection_get_selected_rows(p_selection, &p_model);            if( g_list_length( p_rows ) )            {                /* reverse-sort so that we can delete from the furthest                 * to the closest item to delete...                 */                p_rows = g_list_reverse( p_rows );            }            for (p_node=p_rows; p_node!=NULL; p_node = p_node->next)            {                GtkTreeIter iter;                GtkTreePath *p_path = NULL;                p_path = (GtkTreePath *)p_node->data;                if (p_path)                {                    if (gtk_tree_model_get_iter(p_model, &iter, p_path))                    {                        gint item;                        gtk_tree_model_get(p_model, &iter, 2, &item, -1);                        msg_Err( p_playlist, "PDA delete broken");                    }                }            }#if 0            g_list_foreach (p_rows, (GFunc*)gtk_tree_path_free, NULL);#endif /* Testing the next line */            g_list_foreach (p_rows, deleteItemFromPlaylist, NULL);            g_list_free (p_rows);        }        /* Rebuild the playlist then. */        p_store = gtk_list_store_new (3,                    G_TYPE_STRING, /* Filename */                    G_TYPE_STRING, /* Time */                    G_TYPE_UINT);  /* Hidden field */        if (p_store)        {            PlaylistRebuildListStore(p_intf, p_store, p_playlist);            gtk_tree_view_set_model(GTK_TREE_VIEW(p_tvplaylist), GTK_TREE_MODEL(p_store));            g_object_unref(p_store);        }    }    pl_Release( p_intf );}void onClearPlaylist(GtkButton *button, gpointer user_data){    intf_thread_t *p_intf = GtkGetIntf( button );    playlist_t * p_playlist = pl_Yield( p_intf );    GtkTreeView    *p_tvplaylist;    int item;    if( p_playlist == NULL )    {        return;    }    for(item = playlist_CurrentSize(p_playlist) - 1; item >= 0 ;item-- )    {        msg_Err( p_playlist, "fix pda delete" );    }    pl_Release( p_intf );    // Remove all entries from the Playlist widget.    p_tvplaylist = (GtkTreeView*) lookup_widget( GTK_WIDGET(button), "tvPlaylist");    if (p_tvplaylist)    {        GtkTreeModel *p_play_model;        p_play_model = gtk_tree_view_get_model(p_tvplaylist);        if (p_play_model)        {            gtk_list_store_clear(GTK_LIST_STORE(p_play_model));        }    }}void onPreferenceSave(GtkButton *button, gpointer user_data){#if 0    intf_thread_t *p_intf = GtkGetIntf( button );    msg_Dbg(p_intf, "Preferences Save" );    config_SaveConfigFile( p_intf, NULL );#endif}void onPreferenceApply(GtkButton *button, gpointer user_data){#if 0    intf_thread_t *p_intf = GtkGetIntf( button );    msg_Dbg(p_intf, "Preferences Apply" );#endif}void onPreferenceCancel(GtkButton *button, gpointer user_data){#if 0    intf_thread_t *p_intf = GtkGetIntf( button );    msg_Dbg(p_intf, "Preferences Cancel" );    config_ResetAll( p_intf );    /* Cancel interface changes. */    config_SaveConfigFile( p_intf, NULL );#endif}void onAddTranscodeToPlaylist(GtkButton *button, gpointer user_data){    intf_thread_t *p_intf = GtkGetIntf( button );    GtkEntry       *p_entryVideoCodec = NULL;    GtkSpinButton  *p_entryVideoBitrate = NULL;    GtkSpinButton  *p_entryVideoBitrateTolerance = NULL;    GtkSpinButton  *p_entryVideoKeyFrameInterval = NULL;    GtkCheckButton *p_checkVideoDeinterlace = NULL;    GtkEntry       *p_entryAudioCodec = NULL;    GtkSpinButton  *p_entryAudioBitrate = NULL;    const gchar    *p_video_codec;    gint            i_video_bitrate;    gint            i_video_bitrate_tolerance;    gint            i_video_keyframe_interval;    gboolean        b_video_deinterlace;    const gchar    *p_audio_codec;    gint            i_audio_bitrate;    GtkEntry       *p_entryStdAccess = NULL;    GtkEntry       *p_entryStdMuxer = NULL;    GtkEntry       *p_entryStdURL = NULL;    GtkEntry       *p_entryStdAnnounce = NULL;    GtkSpinButton  *p_entryStdTTL = NULL;    GtkCheckButton *p_checkSAP = NULL;    GtkCheckButton *p_checkSLP = NULL;    const gchar    *p_std_announce;    const gchar    *p_std_access;    const gchar    *p_std_muxer;    const gchar    *p_std_url;    gboolean        b_sap_announce;    gboolean        b_slp_announce;    gint            i_std_ttl;    char **ppsz_options = NULL; /* list of options */    int  i_options=0;    int  i;    gchar mrl[7];    int   i_pos;    ppsz_options = (char **) malloc(3 *sizeof(char*));    if (ppsz_options == NULL)    {        msg_Err(p_intf, "No memory to allocate for v4l options.");        return;    }    for (i=0; i<3; i++)    {        ppsz_options[i] = (char *) malloc(VLC_MAX_MRL * sizeof(char));        if (ppsz_options[i] == NULL)        {            msg_Err(p_intf, "No memory to allocate for v4l options string %i.", i);            for (i-=1; i>=0; i--)                free(ppsz_options[i]);            free(ppsz_options);            return;        }    }    /* Update the playlist */    playlist_t *p_playlist = pl_Yield( p_intf );    if( p_playlist == NULL ) return;    /* Get all the options. */    i_pos = snprintf( &mrl[0], VLC_MAX_MRL, "sout");    mrl[6] = '\0';    /* option 1 */    i_pos = snprintf( &ppsz_options[i_options][0], VLC_MAX_MRL, "sout='#transcode{");    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    p_entryVideoCodec   = (GtkEntry*) lookup_widget( GTK_WIDGET(button), "entryVideoCodec" );    p_entryVideoBitrate = (GtkSpinButton*) lookup_widget( GTK_WIDGET(button), "entryVideoBitrate" );    p_entryVideoBitrateTolerance = (GtkSpinButton*) lookup_widget( GTK_WIDGET(button), "entryVideoBitrateTolerance" );    p_entryVideoKeyFrameInterval = (GtkSpinButton*) lookup_widget( GTK_WIDGET(button), "entryVideoKeyFrameInterval" );     p_video_codec = gtk_entry_get_text(GTK_ENTRY(p_entryVideoCodec));    i_video_bitrate = gtk_spin_button_get_value_as_int(p_entryVideoBitrate);    i_video_bitrate_tolerance = gtk_spin_button_get_value_as_int(p_entryVideoBitrateTolerance);    i_video_keyframe_interval = gtk_spin_button_get_value_as_int(p_entryVideoKeyFrameInterval);     i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "vcodec=%s,", (char*)p_video_codec );    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "vb=%d,", (int)i_video_bitrate );    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "vt=%d,", (int)i_video_bitrate_tolerance );    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "keyint=%d,", (int)i_video_keyframe_interval );    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    p_checkVideoDeinterlace = (GtkCheckButton*) lookup_widget( GTK_WIDGET(button), "checkVideoDeinterlace" );    b_video_deinterlace = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p_checkVideoDeinterlace));    if (b_video_deinterlace)    {        i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "deinterlace," );        if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    }    p_entryAudioCodec   = (GtkEntry*) lookup_widget( GTK_WIDGET(button), "entryAudioCodec" );    p_entryAudioBitrate = (GtkSpinButton*) lookup_widget( GTK_WIDGET(button), "entryAudioBitrate" );    p_audio_codec = gtk_entry_get_text(GTK_ENTRY(p_entryAudioCodec));    i_audio_bitrate = gtk_spin_button_get_value_as_int(p_entryAudioBitrate);    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "acodec=%s,", (char*)p_audio_codec );    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "ab=%d,", (int)i_audio_bitrate );    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "channels=1}"/*, (int)i_audio_channels*/ );    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    /* option 2 */    i_pos = 0;    i_pos = snprintf( &ppsz_options[i_options++][i_pos], VLC_MAX_MRL - i_pos, "#" );    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    p_entryStdAccess = (GtkEntry*) lookup_widget( GTK_WIDGET(button), "entryStdAccess" );    p_entryStdMuxer  = (GtkEntry*) lookup_widget( GTK_WIDGET(button), "entryStdMuxer" );    p_entryStdURL = (GtkEntry*) lookup_widget( GTK_WIDGET(button), "entryStdURL" );    p_entryStdAnnounce = (GtkEntry*) lookup_widget( GTK_WIDGET(button), "entryAnnounceChannel" );    p_entryStdTTL = (GtkSpinButton*) lookup_widget( GTK_WIDGET(button), "entryStdTTL" );    p_std_access = gtk_entry_get_text(GTK_ENTRY(p_entryStdAccess));    p_std_muxer = gtk_entry_get_text(GTK_ENTRY(p_entryStdMuxer));    p_std_url = gtk_entry_get_text(GTK_ENTRY(p_entryStdURL));    p_std_announce = gtk_entry_get_text(GTK_ENTRY(p_entryStdAnnounce));    b_sap_announce = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p_checkSAP));    b_slp_announce = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(p_checkSLP));    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "std{access=%s,", (char*)p_std_access);    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "mux=%s,", (char*)p_std_muxer);    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "dst=%s", (char*)p_std_url);    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    if (strncasecmp( (const char*)p_std_access, "udp", 3)==0)    {        if (b_sap_announce)        {            i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "sap=%s", (char*)p_std_announce);            if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';        }        if (b_slp_announce)        {            i_pos += snprintf( &ppsz_options[i_options][i_pos], VLC_MAX_MRL - i_pos, "slp=%s", (char*)p_std_announce);            if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';        }    }    i_std_ttl = gtk_spin_button_get_value_as_int(p_entryStdTTL);    i_pos += snprintf( &ppsz_options[i_options++][i_pos], VLC_MAX_MRL - i_pos, "ttl=%d}", (int)i_std_ttl);    if (i_pos>=VLC_MAX_MRL) ppsz_options[i_options][VLC_MAX_MRL-1] = '\0';    if (user_data != NULL)    {      msg_Dbg(p_intf, "Adding transcoding options to playlist item." );    }    else    {      msg_Dbg(p_intf, "Adding --sout to playlist." );      PlaylistAddItem(GTK_WIDGET(button), (gchar*) &mrl, ppsz_options, i_options);    }}void onEntryStdAccessChanged(GtkEditable *editable, gpointer user_data){    intf_thread_t *p_intf = GtkGetIntf( editable );    GtkCheckButton *p_checkSAP = NULL;    GtkCheckButton *p_checkSLP = NULL;    GtkEntry       *p_entryStdAccess = NULL;    const gchar    *p_std_access = NULL;    gboolean        b_announce = FALSE;    p_entryStdAccess = (GtkEntry*) lookup_widget( GTK_WIDGET(editable), "entryStdAccess" );    p_checkSAP = (GtkCheckButton*) lookup_widget( GTK_WIDGET(editable), "checkSAP" );    p_checkSLP = (GtkCheckButton*) lookup_widget( GTK_WIDGET(editable), "checkSLP" );    if ( (p_std_access == NULL) || (p_checkSAP == NULL) || (p_checkSLP == NULL))    {        msg_Err( p_intf, "Access, SAP and SLP widgets not found." );        return;    }    p_std_access = gtk_entry_get_text(GTK_ENTRY(p_entryStdAccess));    b_announce = (strncasecmp( (const char*)p_std_access, "udp", 3) == 0);    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p_checkSAP), b_announce);    gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(p_checkSLP), b_announce);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
波多野结衣亚洲一区| 91丨国产丨九色丨pron| 中文字幕视频一区| 欧美大片在线观看一区| 精品视频一区二区不卡| 成人激情黄色小说| 色香蕉成人二区免费| 成人福利在线看| 欧美成人vps| 久久综合色之久久综合| 精品国产伦一区二区三区免费| 欧美肥妇bbw| 欧美一级片在线| 91精品国产高清一区二区三区 | 国产美女视频91| 首页亚洲欧美制服丝腿| 亚洲一区在线观看免费观看电影高清| 亚洲美女免费视频| 亚洲欧美精品午睡沙发| 成人丝袜高跟foot| 91官网在线免费观看| 欧美日韩国产免费一区二区| 日韩欧美成人一区| 青青草91视频| k8久久久一区二区三区| 久久久久免费观看| 一区二区三区日本| 国精产品一区一区三区mba桃花| 成人小视频在线| 国产精品污网站| 午夜电影网亚洲视频| 久久成人久久爱| 97久久超碰精品国产| 3751色影院一区二区三区| 精品国产青草久久久久福利| 美腿丝袜亚洲三区| 91色乱码一区二区三区| 中文字幕中文字幕一区二区| 天堂蜜桃一区二区三区| 在线成人午夜影院| 久久国产欧美日韩精品| 欧美大片国产精品| 国产精品一区二区果冻传媒| 欧美三级日本三级少妇99| 亚洲香蕉伊在人在线观| 不卡视频免费播放| 亚洲私人影院在线观看| 国产一区91精品张津瑜| 国产亚洲欧美一区在线观看| 亚洲电影欧美电影有声小说| 成人高清av在线| 亚洲综合一区二区| 精品视频一区二区三区免费| 免费不卡在线观看| 国产精品女上位| 欧美中文字幕一区| 亚洲精品午夜久久久| 成人短视频下载| 午夜伊人狠狠久久| 久久免费午夜影院| 91久久精品网| 精品亚洲aⅴ乱码一区二区三区| 欧美日韩国产高清一区二区| 国产专区综合网| 一区二区三区欧美日韩| 日韩欧美一区二区三区在线| 成av人片一区二区| 日本网站在线观看一区二区三区| 91国偷自产一区二区开放时间 | 亚洲欧洲成人精品av97| 在线播放国产精品二区一二区四区| 九九国产精品视频| 一区二区三区精品| 久久蜜桃一区二区| 欧美色倩网站大全免费| 粉嫩绯色av一区二区在线观看| 日韩精品一区二区在线| 成人免费视频视频在线观看免费| 亚洲成人三级小说| 中文字幕巨乱亚洲| 99久久精品情趣| 久久精品国产99| 亚洲一区在线观看免费观看电影高清 | 粉嫩欧美一区二区三区高清影视 | 国产精品嫩草99a| 欧美一级精品在线| 国产福利精品一区| 亚洲国产成人午夜在线一区| 日韩视频123| 欧美在线观看视频一区二区| 国产99久久久国产精品潘金| 久久精品免费观看| 日韩中文字幕亚洲一区二区va在线 | 日韩中文字幕区一区有砖一区 | 久久理论电影网| 欧美福利视频一区| 欧美在线色视频| 91丨porny丨在线| 高清日韩电视剧大全免费| 蜜臀av性久久久久蜜臀aⅴ| 夜夜嗨av一区二区三区中文字幕 | 久久亚洲综合色| 日韩视频一区二区在线观看| 欧美性猛交xxxx乱大交退制版| 丝袜美腿高跟呻吟高潮一区| 亚洲欧美日韩国产一区二区三区| 国产亚洲成aⅴ人片在线观看 | 国产精品国产三级国产aⅴ原创| 精品成人免费观看| 精品久久久久久最新网址| 日韩视频免费观看高清完整版在线观看 | 3751色影院一区二区三区| 欧美三电影在线| 欧美丝袜自拍制服另类| 在线观看成人免费视频| 欧美成人国产一区二区| 成人av在线资源网站| 午夜精品久久久久久久99水蜜桃| 亚洲猫色日本管| 亚洲天堂精品视频| 亚洲激情av在线| 亚洲一区影音先锋| 污片在线观看一区二区| 裸体一区二区三区| 国内久久精品视频| 国产精品原创巨作av| 成人在线视频一区二区| 99r国产精品| 欧美午夜一区二区三区免费大片| 欧美日韩国产高清一区| 欧美成人精品福利| 中文字幕高清不卡| 自拍偷自拍亚洲精品播放| 一区二区三区欧美在线观看| 天天做天天摸天天爽国产一区| 久久www免费人成看片高清| 国产精品99久久久久久似苏梦涵 | 国产一区二区三区最好精华液| 激情欧美日韩一区二区| 国产不卡在线一区| 欧美亚洲国产bt| 精品国产伦一区二区三区观看体验 | 91在线视频播放地址| 欧美性感一区二区三区| 欧美r级电影在线观看| 国产精品久久福利| 午夜视频久久久久久| 国产美女精品人人做人人爽| 成人国产精品免费观看视频| 欧美日韩一本到| 久久久九九九九| 亚洲一二三四在线观看| 国产一区二区主播在线| 欧美在线不卡一区| 久久久久久97三级| 亚洲福利视频导航| 成人精品视频.| 欧美不卡一区二区三区四区| 亚洲欧洲综合另类在线 | 亚洲18女电影在线观看| 国产一区二区三区综合| 欧美日韩欧美一区二区| 国产日韩欧美一区二区三区综合| 欧美大片在线观看一区二区| 亚洲婷婷综合色高清在线| 麻豆极品一区二区三区| 日本久久精品电影| 日本一区免费视频| 激情久久久久久久久久久久久久久久| 色偷偷88欧美精品久久久| 久久久噜噜噜久噜久久综合| 日韩高清国产一区在线| 色综合久久久久久久久| 久久精品一区二区| 免费在线观看视频一区| 欧美丝袜丝nylons| 一区二区三区.www| 99久久精品国产网站| 中文字幕成人网| 国产盗摄女厕一区二区三区| 日韩视频在线观看一区二区| 香蕉乱码成人久久天堂爱免费| av色综合久久天堂av综合| 久久久久久久综合日本| 狠狠色丁香久久婷婷综合_中| 欧美日韩午夜影院| 亚洲综合无码一区二区| 99久久精品国产一区二区三区| 日本一区二区三级电影在线观看| 韩国理伦片一区二区三区在线播放| 在线成人av网站| 午夜国产精品影院在线观看| 欧美日韩在线播| 亚洲午夜视频在线观看| 欧美视频在线一区| 亚洲香蕉伊在人在线观| 欧美日韩高清一区二区不卡| 天天综合网 天天综合色| 91精品国产91热久久久做人人| 午夜欧美在线一二页|