00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef VLCPROC_HPP
00026 #define VLCPROC_HPP
00027
00028 #include <set>
00029
00030 #include <vlc_common.h>
00031 #include <vlc_input.h>
00032 #include <vlc_vout.h>
00033 #include "../vars/equalizer.hpp"
00034 #include "../vars/playtree.hpp"
00035 #include "../vars/time.hpp"
00036 #include "../vars/volume.hpp"
00037 #include "../utils/position.hpp"
00038 #include "../utils/var_text.hpp"
00039 #include "../utils/var_string.hpp"
00040 #include "../commands/cmd_generic.hpp"
00041 #include "../controls/ctrl_video.hpp"
00042
00043 class OSTimer;
00044 class VarBool;
00045 struct aout_instance_t;
00046 struct vout_window_t;
00047
00048
00049
00050 class VlcProc: public SkinObject
00051 {
00052 public:
00053
00054
00055 static VlcProc *instance( intf_thread_t *pIntf );
00056
00057
00058 static void destroy( intf_thread_t *pIntf );
00059
00060
00061 Playtree &getPlaytreeVar() { return *((Playtree*)m_cPlaytree.get()); }
00062
00063
00064 StreamTime &getTimeVar() { return *((StreamTime*)(m_cVarTime.get())); }
00065
00066
00067 Volume &getVolumeVar() { return *((Volume*)(m_cVarVolume.get())); }
00068
00069
00070 VarText &getStreamNameVar()
00071 { return *((VarText*)(m_cVarStreamName.get())); }
00072
00073
00074 VarText &getStreamURIVar()
00075 { return *((VarText*)(m_cVarStreamURI.get())); }
00076
00077
00078 VarText &getStreamBitRateVar()
00079 { return *((VarText*)(m_cVarStreamBitRate.get())); }
00080
00081
00082 VarText &getStreamSampleRateVar()
00083 { return *((VarText*)(m_cVarStreamSampleRate.get())); }
00084
00085
00086 VarString &getStreamArtVar()
00087 { return *((VarString*)(m_cVarStreamArt.get())); }
00088
00089
00090 VarBool &getFullscreenVar() { return *((VarBool*)(m_cVarFullscreen.get())); }
00091 void setFullscreenVar( bool );
00092
00093
00094 bool isVoutUsed() const { return m_pVout != NULL; }
00095
00096
00097 void update_equalizer( );
00098
00099 void on_item_current_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00100 void on_intf_event_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00101 void on_bit_rate_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00102 void on_sample_rate_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00103 void on_can_record_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00104
00105 void on_random_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00106 void on_loop_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00107 void on_repeat_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00108
00109 void on_volume_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00110 void on_audio_filter_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00111
00112 void on_intf_show_changed( vlc_object_t* p_obj, vlc_value_t newVal );
00113
00114 protected:
00115
00116 VlcProc( intf_thread_t *pIntf );
00117 virtual ~VlcProc();
00118
00119 private:
00120
00121 OSTimer *m_pTimer;
00122
00123 VariablePtr m_cPlaytree;
00124 VariablePtr m_cVarRandom;
00125 VariablePtr m_cVarLoop;
00126 VariablePtr m_cVarRepeat;
00127
00128 VariablePtr m_cVarTime;
00129
00130 VariablePtr m_cVarVolume;
00131
00132 VariablePtr m_cVarStreamName;
00133 VariablePtr m_cVarStreamURI;
00134 VariablePtr m_cVarStreamBitRate;
00135 VariablePtr m_cVarStreamSampleRate;
00136 VariablePtr m_cVarStreamArt;
00137
00138 VariablePtr m_cVarMute;
00139
00140 VariablePtr m_cVarPlaying;
00141 VariablePtr m_cVarStopped;
00142 VariablePtr m_cVarPaused;
00143 VariablePtr m_cVarSeekable;
00144 VariablePtr m_cVarRecordable;
00145 VariablePtr m_cVarRecording;
00146
00147 VariablePtr m_cVarFullscreen;
00148 VariablePtr m_cVarHasVout;
00149
00150 VariablePtr m_cVarHasAudio;
00151
00152 EqualizerBands m_varEqBands;
00153 VariablePtr m_cVarEqPreamp;
00154 VariablePtr m_cVarEqualizer;
00155
00156 VariablePtr m_cVarDvdActive;
00157
00158
00159 vout_thread_t *m_pVout;
00160
00161 aout_instance_t *m_pAout;
00162 bool m_bEqualizer_started;
00163
00164
00165
00166
00167
00168
00169
00170
00171 void manage();
00172
00173
00174 void reset_input();
00175
00176
00177 void init_variables();
00178
00179
00180 DEFINE_CALLBACK( VlcProc, Manage );
00181
00182
00183 static int onIntfShow( vlc_object_t *pObj, const char *pVariable,
00184 vlc_value_t oldVal, vlc_value_t newVal,
00185 void *pParam );
00186
00187
00188 static int onInputNew( vlc_object_t *pObj, const char *pVariable,
00189 vlc_value_t oldVal, vlc_value_t newVal,
00190 void *pParam );
00191
00192
00193 static int onItemChange( vlc_object_t *pObj, const char *pVariable,
00194 vlc_value_t oldVal, vlc_value_t newVal,
00195 void *pParam );
00196
00197
00198 static int onItemAppend( vlc_object_t *pObj, const char *pVariable,
00199 vlc_value_t oldVal, vlc_value_t newVal,
00200 void *pParam );
00201
00202
00203 static int onItemDelete( vlc_object_t *pObj, const char *pVariable,
00204 vlc_value_t oldVal, vlc_value_t newVal,
00205 void *pParam );
00206
00207
00208 static int onSkinToLoad( vlc_object_t *pObj, const char *pVariable,
00209 vlc_value_t oldVal, vlc_value_t newVal,
00210 void *pParam );
00211
00212 static int onInteraction( vlc_object_t *pObj, const char *pVariable,
00213 vlc_value_t oldVal, vlc_value_t newVal,
00214 void *pParam );
00215
00216 static int onEqBandsChange( vlc_object_t *pObj, const char *pVariable,
00217 vlc_value_t oldVal, vlc_value_t newVal,
00218 void *pParam );
00219
00220 static int onEqPreampChange( vlc_object_t *pObj, const char *pVariable,
00221 vlc_value_t oldVal, vlc_value_t newVal,
00222 void *pParam );
00223
00224
00225 static int onGenericCallback( vlc_object_t *pObj, const char *pVariable,
00226 vlc_value_t oldVal, vlc_value_t newVal,
00227 void *pParam );
00228
00229 };
00230
00231
00232 #endif