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

📄 extended.m

📁 VLC Player Source Code
💻 M
📖 第 1 页 / 共 2 页
字号:
    o_config_changed = YES;}/* change the opaqueness of the vouts */- (IBAction)opaqueSliderAction:(id)sender{    vlc_value_t val;    id o_window = [NSApp keyWindow];    NSArray *o_windows = [NSApp orderedWindows];    NSEnumerator *o_enumerator = [o_windows objectEnumerator];    playlist_t * p_playlist = pl_Yield( VLCIntf );    vout_thread_t *p_vout = vlc_object_find( VLCIntf, VLC_OBJECT_VOUT, FIND_ANYWHERE );    vout_thread_t *p_real_vout;    val.f_float = [o_sld_opaque floatValue] / 100;    if( p_vout != NULL )    {        p_real_vout = [VLCVoutView getRealVout: p_vout];        var_Set( p_real_vout, "macosx-opaqueness", val );        while ((o_window = [o_enumerator nextObject]))        {            if( [[o_window className] isEqualToString: @"VLCVoutWindow"] ||                [[[VLCMain sharedInstance] getEmbeddedList]                                    windowContainsEmbedded: o_window])            {                [o_window setAlphaValue: val.f_float];            }            break;        }        vlc_object_release( p_vout );    }    /* store to prefs */    config_PutFloat( p_playlist , "macosx-opaqueness" , val.f_float );    vlc_object_release( p_playlist );    o_config_changed = YES;}- (IBAction)enableHeadphoneVirtualizer:(id)sender{    /* en-/disable headphone virtualisation */    if ([o_ckb_hdphnVirt state] == NSOnState)        [self changeAFiltersString: "headphone_channel_mixer" onOrOff: true ];    else        [self changeAFiltersString: "headphone_channel_mixer" onOrOff: false ];}- (IBAction)sliderActionMaximumAudioLevel:(id)sender{    /* read-out the slider's value and apply it */    intf_thread_t * p_intf = VLCIntf;    aout_instance_t * p_aout= (aout_instance_t *)vlc_object_find(p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE);    if( p_aout != NULL )    {        var_SetFloat( p_aout, "norm-max-level", [o_sld_maxLevel floatValue] );        vlc_object_release( p_aout );    }    config_PutFloat( p_intf, "norm-max-level", [o_sld_maxLevel floatValue] );    o_config_changed = YES;}- (IBAction)enableVolumeNormalization:(id)sender{    /* en-/disable volume normalisation */    if( [o_ckb_vlme_norm state] == NSOnState )        [self changeAFiltersString: "normvol" onOrOff: YES ];    else        [self changeAFiltersString: "normvol" onOrOff: NO ];}- (IBAction)videoFilterAction:(id)sender{    /* en-/disable video filters */    if (sender == o_ckb_blur)        [self changeVideoFiltersString: "motionblur" onOrOff: [o_ckb_blur state]];    else if (sender == o_ckb_imgClone)        [self changeVoutFiltersString: "clone" onOrOff: [o_ckb_imgClone state]];    else if (sender == o_ckb_imgCrop)        [self changeVoutFiltersString: "crop" onOrOff: [o_ckb_imgCrop state]];    else if (sender == o_ckb_imgInvers)        [self changeVideoFiltersString: "invert" onOrOff: [o_ckb_imgInvers state]];    else if (sender == o_ckb_trnsform)        [self changeVoutFiltersString: "transform" onOrOff: [o_ckb_trnsform state]];    else if (sender == o_ckb_intZoom )        [self changeVoutFiltersString: "magnify" onOrOff: [o_ckb_intZoom state]];    else if (sender == o_ckb_wave )        [self changeVideoFiltersString: "wave" onOrOff: [o_ckb_wave state]];    else if (sender == o_ckb_gradient )        [self changeVideoFiltersString: "gradient" onOrOff: [o_ckb_gradient state]];    else if (sender == o_ckb_psycho )        [self changeVideoFiltersString: "psychedelic" onOrOff: [o_ckb_psycho state]];    else if (sender == o_ckb_ripple )        [self changeVideoFiltersString: "ripple" onOrOff: [o_ckb_ripple state]];    else        msg_Err( VLCIntf, "cannot find switched video-filter" ); /* this can't happen */}- (IBAction)moreInfoVideoFilters:(id)sender{    /* show info sheet */    NSBeginInformationalAlertSheet(_NS("About the video filters"),                                    _NS("OK"),                                    @"",                                    @"",                                   o_extended_window,                                    nil,                                    nil,                                    nil,                                    nil,                                    _NS("This panel allows on-the-fly selection of various video effects.\n"                                       "These filters can be configured individually in the Preferences, in "                                       "the subsections of Video/Filters.\n"                                       "To choose the order in which the filter are applied, a filter "                                       "option string can be set in the Preferences, Video / Filters section."));}/***************************************************************************** * methods to communicate changes to VLC's core *****************************************************************************/- (void)changeVoutFiltersString:(char *)psz_name onOrOff:(bool )b_add{    /* copied from ../wxwidgets/extrapanel.cpp     * renamed to conform with Cocoa's rules */    /* this method only changes 1st generation video filters (the ones that     * can't be used for transcoding). Have a look at changeVideoFiltersString     * for the 2nd generation filters. */     vout_thread_t *p_vout;    intf_thread_t * p_intf = VLCIntf;     char *psz_parser, *psz_string;    psz_string = config_GetPsz( p_intf, "vout-filter" );     if( !psz_string ) psz_string = strdup("");    psz_parser = strstr( psz_string, psz_name );    if( b_add )    {        if( !psz_parser )        {            psz_parser = psz_string;            asprintf( &psz_string, (*psz_string) ? "%s:%s" : "%s%s",                            psz_string, psz_name );            free( psz_parser );        }        else        {            return;        }    }    else    {        if( psz_parser )        {            memmove( psz_parser, psz_parser + strlen(psz_name) +                            (*(psz_parser + strlen(psz_name)) == ':' ? 1 : 0 ),                            strlen(psz_parser + strlen(psz_name)) + 1 );            /* Remove trailing : : */            if( *(psz_string+strlen(psz_string ) -1 ) == ':' )            {                *(psz_string+strlen(psz_string ) -1 ) = '\0';            }         }         else         {             free( psz_string );             return;         }    }    /* Vout is not kept, so put that in the config */    config_PutPsz( p_intf, "vout-filter", psz_string );    /* Try to set on the fly */    p_vout = (vout_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT,                                              FIND_ANYWHERE );    if( p_vout )    {        var_SetString( p_vout, "vout-filter", psz_string );        vlc_object_release( p_vout );    }    free( psz_string );    o_config_changed = YES;}- (void)changeVideoFiltersString:(char *)psz_name onOrOff:(bool )b_add{    /* same as changeVoutFiltersString but addressing the "video-filter"     * variable which represents the video filter 2 modules */     vout_thread_t *p_vout;    intf_thread_t * p_intf = VLCIntf;     char *psz_parser, *psz_string;    psz_string = config_GetPsz( p_intf, "video-filter" );     if( !psz_string ) psz_string = strdup("");    psz_parser = strstr( psz_string, psz_name );    if( b_add )    {        if( !psz_parser )        {            psz_parser = psz_string;            asprintf( &psz_string, (*psz_string) ? "%s:%s" : "%s%s",                            psz_string, psz_name );            free( psz_parser );        }        else        {            return;        }    }    else    {        if( psz_parser )        {            memmove( psz_parser, psz_parser + strlen(psz_name) +                            (*(psz_parser + strlen(psz_name)) == ':' ? 1 : 0 ),                            strlen(psz_parser + strlen(psz_name)) + 1 );            /* Remove trailing : : */            if( *(psz_string+strlen(psz_string ) -1 ) == ':' )            {                *(psz_string+strlen(psz_string ) -1 ) = '\0';            }         }         else         {             free( psz_string );             return;         }    }    /* Vout is not kept, so put that in the config */    config_PutPsz( p_intf, "video-filter", psz_string );    /* Try to set on the fly */    p_vout = (vout_thread_t *)vlc_object_find( p_intf, VLC_OBJECT_VOUT,                                              FIND_ANYWHERE );    if( p_vout )    {        var_SetString( p_vout, "video-filter", psz_string );        vlc_object_release( p_vout );    }    free( psz_string );    o_config_changed = YES;}- (void)changeAFiltersString: (char *)psz_name onOrOff: (bool )b_add;{    /* copied from ../wxwidgets/extrapanel.cpp     * renamed to conform with Cocoa's rules */    char *psz_parser, *psz_string;    intf_thread_t * p_intf = VLCIntf;    aout_instance_t * p_aout= (aout_instance_t *)vlc_object_find(p_intf,                                 VLC_OBJECT_AOUT, FIND_ANYWHERE);    if( p_aout )    {        psz_string = var_GetNonEmptyString( p_aout, "audio-filter" );    }    else    {        psz_string = config_GetPsz( p_intf, "audio-filter" );    }    if( !psz_string ) psz_string = strdup("");    psz_parser = strstr( psz_string, psz_name );    if( b_add )    {        if( !psz_parser )        {            psz_parser = psz_string;            asprintf( &psz_string, (*psz_string) ? "%s:%s" : "%s%s",                            psz_string, psz_name );            free( psz_parser );        }        else        {            return;        }    }    else    {        if( psz_parser )        {            memmove( psz_parser, psz_parser + strlen(psz_name) +                            (*(psz_parser + strlen(psz_name)) == ':' ? 1 : 0 ),                            strlen(psz_parser + strlen(psz_name)) + 1 );            if( *(psz_string+strlen(psz_string ) -1 ) == ':' )            {                *(psz_string+strlen(psz_string ) -1 ) = '\0';            }         }         else         {             free( psz_string );             return;         }    }    if( p_aout == NULL )    {        config_PutPsz( p_intf, "audio-filter", psz_string );    }    else    {        var_SetString( p_aout, "audio-filter", psz_string );        int i = 0;        while( i < p_aout->i_nb_inputs )        {            p_aout->pp_inputs[i]->b_restart = true;            i = (i + 1);        }        vlc_object_release( p_aout );    }    free( psz_string );    o_config_changed = YES;}- (void)savePrefs{    /* save the preferences to make sure that our module-changes will up on     * next launch again */    playlist_t * p_playlist = pl_Yield( VLCIntf );    int returnedValue;    NSArray * theModules;    theModules = [[NSArray alloc] initWithObjects: @"main",         @"headphone",        @"transform",         @"adjust",         @"invert",         @"motionblur",         @"distort",        @"clone",         @"crop",         @"normvol",         @"headphone_channel_mixer",         @"macosx",        nil];    unsigned int x = 0;     while ( x != [theModules count] )    {        returnedValue = config_SaveConfigFile( p_playlist, [[theModules            objectAtIndex: x] UTF8String] );        if (returnedValue != 0)        {            msg_Err(p_playlist, "unable to save the preferences of the "            "extended control attribute '%s' (%i)",            [[theModules objectAtIndex: x] UTF8String] , returnedValue);            [theModules release];            vlc_object_release( p_playlist );             return;        }        x = ( x + 1 );    }     msg_Dbg( VLCIntf, "VLCExtended: saved certain preferences successfully" );     [theModules release];    vlc_object_release( p_playlist );}@end

⌨️ 快捷键说明

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