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

📄 extended_panels.cpp

📁 VLC Player Source Code
💻 CPP
📖 第 1 页 / 共 4 页
字号:
}static int PresetCallback( vlc_object_t *p_this, char const *psz_cmd,                         vlc_value_t oldval, vlc_value_t newval, void *p_data ){    char *psz_preset = newval.psz_string;    Equalizer *eq = ( Equalizer * )p_data;    int i_preset = eq->presetsComboBox->findData( QVariant( psz_preset ) );    eq->presetsComboBox->setCurrentIndex( i_preset );    return VLC_SUCCESS;}void Equalizer::delCallbacks( aout_instance_t *p_aout ){    //var_DelCallback( p_aout, "equalizer-bands", EqzCallback, this );    //var_DelCallback( p_aout, "equalizer-preamp", EqzCallback, this );    var_DelCallback( p_aout, "equalizer-preset", PresetCallback, this );}void Equalizer::addCallbacks( aout_instance_t *p_aout ){    //var_AddCallback( p_aout, "equalizer-bands", EqzCallback, this );    //var_AddCallback( p_aout, "equalizer-preamp", EqzCallback, this );    var_AddCallback( p_aout, "equalizer-preset", PresetCallback, this );}/********************************************************************** * Audio filters **********************************************************************//********************************************************************** * Spatializer **********************************************************************/static const char *psz_control_names[] ={    "Roomsize", "Width" , "Wet", "Dry", "Damp"};Spatializer::Spatializer( intf_thread_t *_p_intf, QWidget *_parent ) :    QWidget( _parent ) , p_intf( _p_intf ){    QFont smallFont = QApplication::font( static_cast<QWidget*>( 0 ) );    smallFont.setPointSize( smallFont.pointSize() - 3 );    QGridLayout *layout = new QGridLayout( this );    layout->setMargin( 0 );    enableCheck = new QCheckBox( qtr( "Enable spatializer" ) );    layout->addWidget( enableCheck, 0, 0, 1, NUM_SP_CTRL );    for( int i = 0 ; i < NUM_SP_CTRL ; i++ )    {        spatCtrl[i] = new QSlider( Qt::Vertical );        if( i < 2 )        {            spatCtrl[i]->setMaximum( 10 );            spatCtrl[i]->setValue( 2 );        }        else        {            spatCtrl[i]->setMaximum( 10 );            spatCtrl[i]->setValue( 0 );            spatCtrl[i]->setMinimum( -10 );        }        oldControlVars[i] = spatCtrl[i]->value();        CONNECT( spatCtrl[i], valueChanged( int ), this, setInitValues() );        ctrl_texts[i] = new QLabel( qfu( psz_control_names[i] ) + "\n" );        ctrl_texts[i]->setFont( smallFont );        ctrl_readout[i] = new QLabel( "" );        ctrl_readout[i]->setFont( smallFont );        layout->addWidget( spatCtrl[i], 1, i );        layout->addWidget( ctrl_readout[i], 2, i );        layout->addWidget( ctrl_texts[i], 3, i );    }    BUTTONACT( enableCheck, enable() );    /* Write down initial values */    aout_instance_t *p_aout = ( aout_instance_t * )        vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE );    char *psz_af;    if( p_aout )    {        psz_af = var_GetNonEmptyString( p_aout, "audio-filter" );        for( int i = 0; i < NUM_SP_CTRL ; i++ )        {            controlVars[i] = var_GetFloat( p_aout, psz_control_names[i] );        }        vlc_object_release( p_aout );    }    else    {        psz_af = config_GetPsz( p_intf, "audio-filter" );        for( int i = 0; i < NUM_SP_CTRL ; i++ )        {            controlVars[i] = config_GetFloat( p_intf, psz_control_names[i] );        }    }    if( psz_af && strstr( psz_af, "spatializer" ) != NULL )        enableCheck->setChecked( true );    free( psz_af );    enable( enableCheck->isChecked() );    setValues( controlVars );}Spatializer::~Spatializer(){}void Spatializer::enable(){    bool en = enableCheck->isChecked();    aout_EnableFilter( VLC_OBJECT( p_intf ), "spatializer",            en ? true : false );    enable( en );}void Spatializer::enable( bool en ){    for( int i = 0 ; i< NUM_SP_CTRL; i++ )    {        spatCtrl[i]->setEnabled( en );        ctrl_texts[i]->setEnabled( en );        ctrl_readout[i]->setEnabled( en );    }}void Spatializer::setInitValues(){    setValues( controlVars );}void Spatializer::setValues( float *controlVars ){    aout_instance_t *p_aout= ( aout_instance_t * )        vlc_object_find( p_intf, VLC_OBJECT_AOUT, FIND_ANYWHERE );    for( int i = 0 ; i < NUM_SP_CTRL ; i++ )    {        float f = (float)(  spatCtrl[i]->value() );        ctrl_readout[i]->setText( QString::number( f, 'f',  1 ) );    }    if( p_aout )    {        for( int i = 0 ; i < NUM_SP_CTRL ; i++ )        {            if( oldControlVars[i] != spatCtrl[i]->value() )            {                var_SetFloat( p_aout, psz_control_names[i],                        ( float )spatCtrl[i]->value() );                config_PutFloat( p_intf, psz_control_names[i],                        ( float ) spatCtrl[i]->value() );                oldControlVars[i] = ( float ) spatCtrl[i]->value();            }        }        vlc_object_release( p_aout );    }}void Spatializer::delCallbacks( aout_instance_t *p_aout ){    //    var_DelCallback( p_aout, "Spatializer-bands", EqzCallback, this );    //    var_DelCallback( p_aout, "Spatializer-preamp", EqzCallback, this );}void Spatializer::addCallbacks( aout_instance_t *p_aout ){    //    var_AddCallback( p_aout, "Spatializer-bands", EqzCallback, this );    //    var_AddCallback( p_aout, "Spatializer-preamp", EqzCallback, this );}#include <QToolButton>#include <QGridLayout>SyncControls::SyncControls( intf_thread_t *_p_intf, QWidget *_parent ) :                            QWidget( _parent ) , p_intf( _p_intf ){    QGroupBox *AVBox, *subsBox;    QToolButton *moinsAV, *plusAV;    QToolButton *moinssubs, *plussubs;    QToolButton *moinssubSpeed, *plussubSpeed;    QToolButton *updateButton;    QGridLayout *mainLayout = new QGridLayout( this );    /* AV sync */    AVBox = new QGroupBox( qtr( "Audio/Video" ) );    QGridLayout *AVLayout = new QGridLayout( AVBox );    moinsAV = new QToolButton;    moinsAV->setToolButtonStyle( Qt::ToolButtonTextOnly );    moinsAV->setAutoRaise( true );    moinsAV->setText( "-" );    AVLayout->addWidget( moinsAV, 0, 1, 1, 1 );    plusAV = new QToolButton;    plusAV->setToolButtonStyle( Qt::ToolButtonTextOnly );    plusAV->setAutoRaise( true );    plusAV->setText( "+" );    AVLayout->addWidget( plusAV, 0, 3, 1, 1 );    QLabel *AVLabel = new QLabel;    AVLabel->setText( qtr( "Advance of audio over video:" ) );    AVLayout->addWidget( AVLabel, 0, 0, 1, 1 );    AVSpin = new QDoubleSpinBox;    AVSpin->setAlignment( Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter );    AVSpin->setDecimals( 3 );    AVSpin->setMinimum( -100.0 );    AVSpin->setMaximum( 100.0 );    AVSpin->setSingleStep( 0.1 );    AVSpin->setToolTip( qtr( "A positive value means that\n"                             "the audio is ahead of the video" ) );    AVSpin->setSuffix( "s" );    AVLayout->addWidget( AVSpin, 0, 2, 1, 1 );    mainLayout->addWidget( AVBox, 1, 0, 1, 5 );    /* Subs */    subsBox = new QGroupBox( qtr( "Subtitles/Video" ) );    QGridLayout *subsLayout = new QGridLayout( subsBox );    moinssubs = new QToolButton;    moinssubs->setToolButtonStyle( Qt::ToolButtonTextOnly );    moinssubs->setAutoRaise( true );    moinssubs->setText( "-" );    subsLayout->addWidget( moinssubs, 0, 1, 1, 1 );    plussubs = new QToolButton;    plussubs->setToolButtonStyle( Qt::ToolButtonTextOnly );    plussubs->setAutoRaise( true );    plussubs->setText( "+" );    subsLayout->addWidget( plussubs, 0, 3, 1, 1 );    QLabel *subsLabel = new QLabel;    subsLabel->setText( qtr( "Advance of subtitles over video:" ) );    subsLayout->addWidget( subsLabel, 0, 0, 1, 1 );    subsSpin = new QDoubleSpinBox;    subsSpin->setAlignment( Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter );    subsSpin->setDecimals( 3 );    subsSpin->setMinimum( -100.0 );    subsSpin->setMaximum( 100.0 );    subsSpin->setSingleStep( 0.1 );    subsSpin->setToolTip( qtr( "A positive value means that\n"                             "the subtitles are ahead of the video" ) );    subsSpin->setSuffix( "s" );    subsLayout->addWidget( subsSpin, 0, 2, 1, 1 );    moinssubSpeed = new QToolButton;    moinssubSpeed->setToolButtonStyle( Qt::ToolButtonTextOnly );    moinssubSpeed->setAutoRaise( true );    moinssubSpeed->setText( "-" );    subsLayout->addWidget( moinssubSpeed, 1, 1, 1, 1 );    plussubSpeed = new QToolButton;    plussubSpeed->setToolButtonStyle( Qt::ToolButtonTextOnly );    plussubSpeed->setAutoRaise( true );    plussubSpeed->setText( "+" );    subsLayout->addWidget( plussubSpeed, 1, 3, 1, 1 );    QLabel *subSpeedLabel = new QLabel;    subSpeedLabel->setText( qtr( "Speed of the subtitles:" ) );    subsLayout->addWidget( subSpeedLabel, 1, 0, 1, 3 );    subSpeedSpin = new QDoubleSpinBox;    subSpeedSpin->setAlignment( Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter );    subSpeedSpin->setDecimals( 3 );    subSpeedSpin->setMinimum( 1 );    subSpeedSpin->setMaximum( 100 );    subSpeedSpin->setSingleStep( 0.2 );    subsLayout->addWidget( subSpeedSpin, 1, 2, 1, 1 );    mainLayout->addWidget( subsBox, 2, 0, 2, 5 );    updateButton = new QToolButton;    updateButton->setAutoRaise( true );    mainLayout->addWidget( updateButton, 0, 4, 1, 1 );    /* Various Connects */    CONNECT( moinsAV, clicked(), AVSpin, stepDown () );    CONNECT( plusAV, clicked(), AVSpin, stepUp () );    CONNECT( moinssubs, clicked(), subsSpin, stepDown () );    CONNECT( plussubs, clicked(), subsSpin, stepUp () );    CONNECT( moinssubSpeed, clicked(), subSpeedSpin, stepDown () );    CONNECT( plussubSpeed, clicked(), subSpeedSpin, stepUp () );    CONNECT( AVSpin, valueChanged ( double ), this, advanceAudio( double ) ) ;    CONNECT( subsSpin, valueChanged ( double ), this, advanceSubs( double ) ) ;    CONNECT( subSpeedSpin, valueChanged ( double ),             this, adjustSubsSpeed( double ) );    BUTTON_SET_ACT_I( updateButton, "", update,            qtr( "Force update of this dialog's values" ), update() );    /* Set it */    update();}void SyncControls::clean(){    AVSpin->setValue( 0.0 );    subsSpin->setValue( 0.0 );    subSpeedSpin->setValue( 1.0 );}void SyncControls::update(){    int64_t i_delay;    if( THEMIM->getInput() )    {        i_delay = var_GetTime( THEMIM->getInput(), "spu-delay" );        AVSpin->setValue( ( (double)i_delay ) / 1000000 );        i_delay = var_GetTime( THEMIM->getInput(), "audio-delay" );        subsSpin->setValue( ( (double)i_delay ) / 1000000 );        subSpeedSpin->setValue( var_GetFloat( THEMIM->getInput(), "sub-fps" ) );    }}void SyncControls::advanceAudio( double f_advance ){    if( THEMIM->getInput() )    {        int64_t i_delay = var_GetTime( THEMIM->getInput(), "audio-delay" );        i_delay = f_advance * 1000000;        var_SetTime( THEMIM->getInput(), "audio-delay", i_delay );    }}void SyncControls::advanceSubs( double f_advance ){    if( THEMIM->getInput() )    {        int64_t i_delay = var_GetTime( THEMIM->getInput(), "spu-delay" );        i_delay = f_advance * 1000000;        var_SetTime( THEMIM->getInput(), "spu-delay", i_delay );        msg_Dbg( p_intf, "I am advancing subtitles %d", f_advance );    }}void SyncControls::adjustSubsSpeed( double f_fps ){    if( THEMIM->getInput() )    {        var_SetFloat( THEMIM->getInput(), "sub-fps", f_fps );    }}/********************************************************************** * Video filters / Adjust **********************************************************************//********************************************************************** * Extended playbak controls **********************************************************************/

⌨️ 快捷键说明

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