pIntf->p_sys->p_vlcProc = NULL;
}
+#define SET_BOOL(m,v) ((VarBoolImpl*)(m).get())->set(v)
+#define SET_STREAMTIME(m,v,b) ((StreamTime*)(m).get())->set(v,b)
+#define SET_TEXT(m,v) ((VarText*)(m).get())->set(v)
+#define SET_STRING(m,v) ((VarString*)(m).get())->set(v)
+#define SET_VOLUME(m,v,b) ((Volume*)(m).get())->set(v,b)
VlcProc::VlcProc( intf_thread_t *pIntf ): SkinObject( pIntf ),
m_varEqBands( pIntf ), m_pVout( NULL ), m_pAout( NULL ),
REGISTER_VAR( m_cVarEqPreamp, EqualizerPreamp, "equalizer.preamp" )
#undef REGISTER_VAR
+ m_cVarSpeed = VariablePtr( new VarText( getIntf(), false ) );
+ pVarManager->registerVar( m_cVarSpeed, "speed" );
+ SET_TEXT( m_cVarSpeed, UString( getIntf(), "1") );
m_cVarStreamName = VariablePtr( new VarText( getIntf(), false ) );
pVarManager->registerVar( m_cVarStreamName, "streamName" );
m_cVarStreamURI = VariablePtr( new VarText( getIntf(), false ) );
{
case INPUT_EVENT_STATE:
case INPUT_EVENT_POSITION:
+ case INPUT_EVENT_RATE:
case INPUT_EVENT_ES:
case INPUT_EVENT_CHAPTER:
case INPUT_EVENT_RECORD:
}
-#define SET_BOOL(m,v) ((VarBoolImpl*)(m).get())->set(v)
-#define SET_STREAMTIME(m,v,b) ((StreamTime*)(m).get())->set(v,b)
-#define SET_TEXT(m,v) ((VarText*)(m).get())->set(v)
-#define SET_STRING(m,v) ((VarString*)(m).get())->set(v)
-#define SET_VOLUME(m,v,b) ((Volume*)(m).get())->set(v,b)
-
void VlcProc::on_item_current_changed( vlc_object_t* p_obj, vlc_value_t newVal )
{
(void)p_obj;
break;
}
+ case INPUT_EVENT_RATE:
+ {
+ float rate = var_GetFloat( pInput, "rate" );
+ char* buffer;
+ if( asprintf( &buffer, "%.3g", rate ) != -1 )
+ {
+ SET_TEXT( m_cVarSpeed, UString( getIntf(), buffer ) );
+ free( buffer );
+ }
+ break;
+ }
+
case INPUT_EVENT_ES:
{
// Do we have audio
/// Getter for the volume variable
Volume &getVolumeVar() { return *((Volume*)(m_cVarVolume.get())); }
+ /// Getter for the current playback speed
+ VarText &getSpeedVar()
+ { return *((VarText*)(m_cVarSpeed.get())); }
+
/// Getter for the stream name variable
VarText &getStreamNameVar()
{ return *((VarText*)(m_cVarStreamName.get())); }
VariablePtr m_cVarTime;
/// Variable for audio volume
VariablePtr m_cVarVolume;
+ /// Variable for speed playback
+ VariablePtr m_cVarSpeed;
/// Variable for current stream properties
VariablePtr m_cVarStreamName;
VariablePtr m_cVarStreamURI;
{
temp.replace( pos, 2, pVlcProc->getStreamSampleRateVar().get() );
}
+ while( (pos = temp.find( "$R" )) != UString::npos )
+ {
+ temp.replace( pos, 2, pVlcProc->getSpeedVar().get() );
+ }
return temp;
}
{
pVlcProc->getStreamSampleRateVar().addObserver( this );
}
+ if( m_text.find( "$R" ) != UString::npos )
+ {
+ pVlcProc->getSpeedVar().addObserver( this );
+ }
}
notify();
{
pVlcProc->getTimeVar().delObserver( this );
pVlcProc->getVolumeVar().delObserver( this );
+ pVlcProc->getSpeedVar().delObserver( this );
pVlcProc->getStreamNameVar().delObserver( this );
pVlcProc->getStreamURIVar().delObserver( this );
pVlcProc->getStreamBitRateVar().delObserver( this );