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

📄 playlistinfo.m

📁 VLC Player Source Code
💻 M
📖 第 1 页 / 共 2 页
字号:
/***************************************************************************** r playlistinfo.m: MacOS X interface module ***************************************************************************** * Copyright (C) 2002-2008 the VideoLAN team * $Id$ * * Authors: Benjamin Pracht <bigben at videolan dot org> *          Felix Paul Kühne <fkuehne at videolan dot org> * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************//***************************************************************************** * Preamble *****************************************************************************/#include "intf.h"#include "playlistinfo.h"#include "playlist.h"/***************************************************************************** * VLCPlaylistInfo Implementation *****************************************************************************/@implementation VLCInfostatic VLCInfo *_o_sharedInstance = nil;+ (VLCInfo *)sharedInstance{    return _o_sharedInstance ? _o_sharedInstance : [[self alloc] init];}- (id)init{    if( _o_sharedInstance ) {        [self dealloc];    } else {        _o_sharedInstance = [super init];                if( _o_sharedInstance != nil )        {            p_item = NULL;            o_statUpdateTimer = nil;            [self updatePanelWithItem: NULL];            rootItem = [[VLCInfoTreeItem alloc] init];        }    }    return _o_sharedInstance;}- (void)awakeFromNib{    [o_info_window setExcludedFromWindowsMenu: YES];    [o_info_window setFloatingPanel: NO];    [o_info_window setTitle: _NS("Media Information")];    [o_uri_lbl setStringValue: _NS("Location")];    [o_title_lbl setStringValue: _NS("Title")];    [o_author_lbl setStringValue: _NS("Artist")];    [o_saveMetaData_btn setStringValue: _NS("Save Metadata" )];    [[o_tab_view tabViewItemAtIndex: 0] setLabel: _NS("General")];    [[o_tab_view tabViewItemAtIndex: 1] setLabel: _NS("Codec Details")];    [[o_tab_view tabViewItemAtIndex: 2] setLabel: _NS("Statistics")];    [o_tab_view selectTabViewItemAtIndex: 0];    /* constants defined in vlc_meta.h */    [o_genre_lbl setStringValue: _NS(VLC_META_GENRE)];    [o_copyright_lbl setStringValue: _NS(VLC_META_COPYRIGHT)];    [o_collection_lbl setStringValue: _NS(VLC_META_ALBUM)];    [o_seqNum_lbl setStringValue: _NS(VLC_META_TRACK_NUMBER)];    [o_description_lbl setStringValue: _NS(VLC_META_DESCRIPTION)];    [o_date_lbl setStringValue: _NS(VLC_META_DATE)];    [o_language_lbl setStringValue: _NS(VLC_META_LANGUAGE)];    [o_nowPlaying_lbl setStringValue: _NS(VLC_META_NOW_PLAYING)];    [o_publisher_lbl setStringValue: _NS(VLC_META_PUBLISHER)];    /* statistics */    [o_input_box setTitle: _NS("Input")];    [o_read_bytes_lbl setStringValue: _NS("Read at media")];    [o_input_bitrate_lbl setStringValue: _NS("Input bitrate")];    [o_demux_bytes_lbl setStringValue: _NS("Demuxed")];    [o_demux_bitrate_lbl setStringValue: _NS("Stream bitrate")];    [o_video_box setTitle: _NS("Video")];    [o_video_decoded_lbl setStringValue: _NS("Decoded blocks")];    [o_displayed_lbl setStringValue: _NS("Displayed frames")];    [o_lost_frames_lbl setStringValue: _NS("Lost frames")];	[o_fps_lbl setStringValue: _NS("Frames per Second")];    [o_sout_box setTitle: _NS("Streaming")];    [o_sent_packets_lbl setStringValue: _NS("Sent packets")];    [o_sent_bytes_lbl setStringValue: _NS("Sent bytes")];    [o_sent_bitrate_lbl setStringValue: _NS("Send rate")];    [o_audio_box setTitle: _NS("Audio")];    [o_audio_decoded_lbl setStringValue: _NS("Decoded blocks")];    [o_played_abuffers_lbl setStringValue: _NS("Played buffers")];    [o_lost_abuffers_lbl setStringValue: _NS("Lost buffers")];    [o_info_window setInitialFirstResponder: o_uri_txt];    [o_info_window setDelegate: self];    /* We may be awoken from nib way after initialisation     * Update ourselves */    [self updatePanelWithItem:p_item];}- (void)stopTimers{    /* make sure that the timer is released in any case */    if( o_statUpdateTimer && [o_statUpdateTimer isValid] )        [o_statUpdateTimer invalidate];    [rootItem release];    [o_statUpdateTimer release];    o_statUpdateTimer = nil;}- (void)dealloc{    /* make sure that the timer is released in any case */    if( o_statUpdateTimer && [o_statUpdateTimer isValid] )        [o_statUpdateTimer invalidate];    [o_statUpdateTimer release];    if( p_item ) vlc_gc_decref( p_item );    [super dealloc];}- (void)windowDidBecomeKey:(NSNotification *)notification{    BOOL b_stats = config_GetInt(VLCIntf, "stats");    if( b_stats )    {        if( o_statUpdateTimer )        {            [o_statUpdateTimer invalidate];            [o_statUpdateTimer release];            o_statUpdateTimer = nil;        }        o_statUpdateTimer = [NSTimer scheduledTimerWithTimeInterval: 1            target: self selector: @selector(updateStatistics:)            userInfo: nil repeats: YES];        [o_statUpdateTimer fire];        [o_statUpdateTimer retain];    }}- (BOOL)windowShouldClose:(id)sender{    if( [o_statUpdateTimer isValid] )        [o_statUpdateTimer invalidate];    if( o_statUpdateTimer )        [o_statUpdateTimer release];    o_statUpdateTimer = nil;    return YES;}- (void)initPanel{    BOOL b_stats = config_GetInt(VLCIntf, "stats");    if( !b_stats )    {        if( [o_tab_view numberOfTabViewItems] > 2 )            [o_tab_view removeTabViewItem: [o_tab_view tabViewItemAtIndex: 2]];    }    [self initMediaPanelStats];    [o_info_window makeKeyAndOrderFront: self];}- (void)initMediaPanelStats{    //Initializing Input Variables    [o_read_bytes_txt setStringValue: [NSString stringWithFormat:@"%8.0f kB", (float)0]];    [o_input_bitrate_txt setStringValue: [NSString stringWithFormat:@"%6.0f kb/s", (float)0]];    [o_demux_bytes_txt setStringValue: [NSString stringWithFormat:@"%8.0f kB", (float)0]];    [o_demux_bitrate_txt setStringValue: [NSString stringWithFormat:@"%6.0f kb/s", (float)0]];        //Initializing Video Variables    [o_video_decoded_txt setIntValue:0];    [o_displayed_txt setIntValue:0];    [o_lost_frames_txt setIntValue:0];    [o_fps_txt setFloatValue:0];    //Initializing Output Variables    [o_sent_packets_txt setIntValue: 0];    [o_sent_bytes_txt setStringValue: [NSString stringWithFormat:@"%8.0f kB", (float)0]];    [o_sent_bitrate_txt setStringValue: [NSString stringWithFormat:@"%6.0f kb/s", (float)0]];    //Initializing Audio Variables    [o_audio_decoded_txt setIntValue:0];    [o_played_abuffers_txt setIntValue: 0];    [o_lost_abuffers_txt setIntValue: 0];}- (void)updatePanelWithItem:(input_item_t *)_p_item;{    if( _p_item != p_item )    {        if( p_item ) vlc_gc_decref( p_item );        [o_saveMetaData_btn setEnabled: NO];        if( _p_item ) vlc_gc_incref( _p_item );        p_item = _p_item;    }    if( !p_item )    {        /* Erase */    #define SET( foo ) \        [self setMeta: "" forLabel: o_##foo##_txt];        SET( uri );        SET( title );        SET( author );        SET( collection );        SET( seqNum );        SET( genre );        SET( copyright );        SET( publisher );        SET( nowPlaying );        SET( language );        SET( date );        SET( description );    #undef SET        [o_image_well setImage: [NSImage imageNamed: @"noart.png"]];    }    else    {        if( !input_item_IsPreparsed( p_item ) )        {            playlist_t * p_playlist = pl_Yield( VLCIntf );            playlist_PreparseEnqueue( p_playlist, p_item );            pl_Release( VLCIntf );        }        /* fill uri info */        char * psz_url = input_item_GetURI( p_item );        [o_uri_txt setStringValue: [NSString stringWithUTF8String: psz_url ? psz_url : ""  ]];        free( psz_url );        /* fill title info */        char * psz_title = input_item_GetTitle( p_item );        if( !psz_title )            psz_title = input_item_GetName( p_item );        [o_title_txt setStringValue: [NSString stringWithUTF8String: psz_title ? : ""  ]];        free( psz_title );    #define SET( foo, bar ) \        char *psz_##foo = input_item_Get##bar ( p_item ); \        [self setMeta: psz_##foo forLabel: o_##foo##_txt]; \        FREENULL( psz_##foo );        /* fill the other fields */        SET( author, Artist );        SET( collection, Album );        SET( seqNum, TrackNum );        SET( genre, Genre );        SET( copyright, Copyright );        SET( publisher, Publisher );        SET( nowPlaying, NowPlaying );        SET( language, Language );        SET( date, Date );        SET( description, Description );    #undef SET        char *psz_meta;        NSImage *o_image;        psz_meta = input_item_GetArtURL( p_item );        if( psz_meta && !strncmp( psz_meta, "file://", 7 ) )            o_image = [[NSImage alloc] initWithContentsOfFile: [NSString stringWithUTF8String: psz_meta+7]];        else            o_image = [[NSImage imageNamed: @"noart.png"] retain];        [o_image_well setImage: o_image];        [o_image release];        FREENULL( psz_meta );    }    /* reload the advanced table */

⌨️ 快捷键说明

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