From: Cyril Deguet Date: Sat, 15 Apr 2006 16:18:59 +0000 (+0000) Subject: * all: added a new skin text variable "$S" to get the audio sample rate X-Git-Tag: 0.9.0-test0~11491 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=467472bcecd6bae797dea03543ca105a61a8f6c2;p=vlc * all: added a new skin text variable "$S" to get the audio sample rate (in KHz) + fixed the bitrate ("$B") variable to use only the audio bit rate. * winamp2.xml: updated the winamp2 skin --- diff --git a/doc/skins/skins2-howto.xml b/doc/skins/skins2-howto.xml index af75365522..566cde564f 100644 --- a/doc/skins/skins2-howto.xml +++ b/doc/skins/skins2-howto.xml @@ -921,7 +921,7 @@ difficulty to understand how VLC skins work. - $B: Get the stream bitrate (in kb/s). + $B: Get the audio stream bitrate (in kb/s). $V: Value of the volume (from 0 to 100 --> useful for a percentage). @@ -948,6 +948,9 @@ difficulty to understand how VLC skins work. $F: Full name (with path) of the stream that is being played. + + $S: Get the audio sample rate (in kHz). + Example of tooltiptext value for a slider controlling the volume: "Volume: $V%". diff --git a/modules/gui/skins2/src/vlcproc.cpp b/modules/gui/skins2/src/vlcproc.cpp index bc97821977..e67f3c7da4 100644 --- a/modules/gui/skins2/src/vlcproc.cpp +++ b/modules/gui/skins2/src/vlcproc.cpp @@ -26,7 +26,6 @@ #include #include -#include #include "vlcproc.hpp" #include "os_factory.hpp" #include "os_timer.hpp" @@ -111,6 +110,8 @@ VlcProc::VlcProc( intf_thread_t *pIntf ): SkinObject( pIntf ), pVarManager->registerVar( m_cVarStreamURI, "streamURI" ); m_cVarStreamBitRate = VariablePtr( new VarText( getIntf(), false ) ); pVarManager->registerVar( m_cVarStreamBitRate, "bitrate" ); + m_cVarStreamSampleRate = VariablePtr( new VarText( getIntf(), false ) ); + pVarManager->registerVar( m_cVarStreamSampleRate, "samplerate" ); // Register the equalizer bands for( int i = 0; i < EqualizerBands::kNbBands; i++) @@ -243,6 +244,7 @@ void VlcProc::manage() VarBoolImpl *pVarFullscreen = (VarBoolImpl*)m_cVarFullscreen.get(); VarBoolImpl *pVarHasVout = (VarBoolImpl*)m_cVarHasVout.get(); VarText *pBitrate = (VarText*)m_cVarStreamBitRate.get(); + VarText *pSampleRate = (VarText*)m_cVarStreamSampleRate.get(); // Refresh audio variables refreshAudio(); @@ -295,11 +297,13 @@ void VlcProc::manage() vlc_object_release( pVout ); } - // Get information on the current playlist item - input_item_t *pItem = pInput->input.p_item; // Get the input bitrate - int bitrate = (int)(roundf(pItem->p_stats->f_demux_bitrate*8000)); + int bitrate = var_GetInteger( pInput, "bit-rate" ) / 1000; pBitrate->set( UString::fromInt( getIntf(), bitrate ) ); + + // Get the audio sample rate + int sampleRate = var_GetInteger( pInput, "sample-rate" ) / 1000; + pSampleRate->set( UString::fromInt( getIntf(), sampleRate ) ); } else { diff --git a/modules/gui/skins2/src/vlcproc.hpp b/modules/gui/skins2/src/vlcproc.hpp index d298c13367..b930b2f57a 100644 --- a/modules/gui/skins2/src/vlcproc.hpp +++ b/modules/gui/skins2/src/vlcproc.hpp @@ -76,6 +76,10 @@ class VlcProc: public SkinObject VarText &getStreamBitRateVar() { return *((VarText*)(m_cVarStreamBitRate.get())); } + /// Getter for the stream sample rate variable + VarText &getStreamSampleRateVar() + { return *((VarText*)(m_cVarStreamSampleRate.get())); } + /// Getter for the vout size variable VarBox &getVoutSizeVar() { return m_varVoutSize; } @@ -115,6 +119,7 @@ class VlcProc: public SkinObject VariablePtr m_cVarStreamName; VariablePtr m_cVarStreamURI; VariablePtr m_cVarStreamBitRate; + VariablePtr m_cVarStreamSampleRate; /// Variable for the "mute" state VariablePtr m_cVarMute; /// Variables related to the input diff --git a/modules/gui/skins2/utils/var_text.cpp b/modules/gui/skins2/utils/var_text.cpp index 7ca12fd7bc..e7740d296d 100644 --- a/modules/gui/skins2/utils/var_text.cpp +++ b/modules/gui/skins2/utils/var_text.cpp @@ -49,6 +49,7 @@ VarText::~VarText() pVlcProc->getStreamURIVar().delObserver( this ); pVlcProc->getStreamNameVar().delObserver( this ); pVlcProc->getStreamBitRateVar().delObserver( this ); + pVlcProc->getStreamSampleRateVar().delObserver( this ); VarManager *pVarManager = VarManager::instance( getIntf() ); pVarManager->getHelpText().delObserver( this ); } @@ -126,6 +127,10 @@ const UString VarText::get() const { temp.replace( pos, 2, pVlcProc->getStreamBitRateVar().get() ); } + while( (pos = temp.find( "$S" )) != UString::npos ) + { + temp.replace( pos, 2, pVlcProc->getStreamSampleRateVar().get() ); + } return temp; } @@ -150,6 +155,7 @@ void VarText::set( const UString &rText ) pVlcProc->getStreamNameVar().delObserver( this ); pVlcProc->getStreamURIVar().delObserver( this ); pVlcProc->getStreamBitRateVar().delObserver( this ); + pVlcProc->getStreamSampleRateVar().delObserver( this ); VarManager *pVarManager = VarManager::instance( getIntf() ); pVarManager->getHelpText().delObserver( this ); @@ -189,6 +195,10 @@ void VarText::set( const UString &rText ) { pVlcProc->getStreamBitRateVar().addObserver( this ); } + if( m_text.find( "$S" ) != UString::npos ) + { + pVlcProc->getStreamSampleRateVar().addObserver( this ); + } } notify(); @@ -217,3 +227,4 @@ void VarText::onUpdate( Subject &rVariable, void *arg ) notify(); } } + diff --git a/share/skins2/winamp2.xml b/share/skins2/winamp2.xml index 2371ff2d92..4f244436f3 100644 --- a/share/skins2/winamp2.xml +++ b/share/skins2/winamp2.xml @@ -195,6 +195,7 @@ + diff --git a/src/input/es_out.c b/src/input/es_out.c index 1197dffc1b..862705c51e 100644 --- a/src/input/es_out.c +++ b/src/input/es_out.c @@ -1596,8 +1596,11 @@ static void EsOutAddInfo( es_out_t *out, es_out_id_t *es ) "%d", fmt->audio.i_channels ); if( fmt->audio.i_rate > 0 ) + { input_Control( p_input, INPUT_ADD_INFO, psz_cat, _("Sample rate"), _("%d Hz"), fmt->audio.i_rate ); + var_SetInteger( p_input, "sample-rate", fmt->audio.i_rate ); + } if( fmt->audio.i_bitspersample > 0 ) input_Control( p_input, INPUT_ADD_INFO, psz_cat, @@ -1605,8 +1608,11 @@ static void EsOutAddInfo( es_out_t *out, es_out_id_t *es ) fmt->audio.i_bitspersample ); if( fmt->i_bitrate > 0 ) + { input_Control( p_input, INPUT_ADD_INFO, psz_cat, _("Bitrate"), _("%d kb/s"), fmt->i_bitrate / 1000 ); + var_SetInteger( p_input, "bit-rate", fmt->i_bitrate ); + } break; case VIDEO_ES: diff --git a/src/input/input.c b/src/input/input.c index a3692dc93e..ca3c51c0dc 100644 --- a/src/input/input.c +++ b/src/input/input.c @@ -726,6 +726,9 @@ static int Init( input_thread_t * p_input, vlc_bool_t b_quick ) es_out_Control( p_input->p_es_out, ES_OUT_SET_ACTIVE, VLC_FALSE ); es_out_Control( p_input->p_es_out, ES_OUT_SET_MODE, ES_OUT_MODE_NONE ); + var_Create( p_input, "bit-rate", VLC_VAR_INTEGER ); + var_Create( p_input, "sample-rate", VLC_VAR_INTEGER ); + if( InputSourceInit( p_input, &p_input->input, p_input->input.p_item->psz_uri, NULL, b_quick ) ) {