PLAYING
};
+ enum
+ {
+ OFF = -1
+ };
+
sigc::signal<void, State> signal_state_changed;
sigc::signal<void, const std::string &> signal_title_changed;
sigc::signal<void, const Msp::Time::TimeDelta &> signal_duration_changed;
sigc::signal<void, const Msp::Time::TimeDelta &> signal_position_changed;
sigc::signal<void> signal_channels_changed;
+ sigc::signal<void, int> signal_current_audio_channel_changed;
+ sigc::signal<void, int> signal_current_spu_channel_changed;
sigc::signal<void> signal_finished;
private:
XineEngine &engine;
+ std::string filename;
xine_stream_t *stream;
xine_event_queue_t *queue;
Msp::Mutex mutex;
Msp::Time::TimeDelta position;
std::vector<std::string> audio_channels;
std::vector<std::string> spu_channels;
+ int current_audio;
+ int current_spu;
bool channels_changed;
public:
State get_state() const { return state; }
const Msp::Time::TimeDelta &get_duration() const { return duration; }
const Msp::Time::TimeDelta &get_position() const { return position; }
- const std::string &get_title() const { return title; }
- const std::vector<std::string> &get_audio_channels() const { return audio_channels; }
- const std::vector<std::string> &get_spu_channels() const { return spu_channels; }
- void set_audio_channel(unsigned);
- void set_audio_off();
- void set_spu_channel(unsigned);
- void set_spu_off();
+ const std::string &get_title() const;
void play();
void seek(const Msp::Time::TimeDelta &);
void set_state(State);
public:
+ const std::vector<std::string> &get_audio_channels() const { return audio_channels; }
+ const std::vector<std::string> &get_spu_channels() const { return spu_channels; }
+ void select_audio_channel(int);
+ void select_spu_channel(int);
+ int get_current_audio_channel() const { return current_audio; }
+ int get_current_spu_channel() const { return current_spu; }
+
void tick();
private:
void update_info();