2
* =====================================================================================
9
* Created: 2007年12月22日 20时40分35秒 CST
13
* Author: wind (xihe), xihels@gmail.com
16
* =====================================================================================
24
#include <gtkmm/socket.h>
26
class GMplayer : public Gtk::Socket {
30
void send_ctrl_command(const char* c);
34
void restart() { stop(); start();}
37
is_record ? start_record() : start_play();
39
void start(const std::string& filename)
41
is_record ? start_record(filename) : start_play(filename);
45
void set_cache(int var) { icache = var; }
46
void set_record(bool record)
48
if (is_record != record)
52
void set_outfilename(const std::string& filename, const std::string& name = "");
53
bool running() const { return is_running; }
54
bool pausing() const { return is_pause; }
55
bool recording() const { return is_recording; }
56
void set_out_slot(const sigc::slot<bool, Glib::IOCondition>& slot)
59
ssize_t get_mplayer_log(char* buf, size_t count)
60
{ return read(player_child_tem, buf, count); }
62
typedef sigc::signal<void> type_signal_stop;
63
type_signal_stop signal_stop()
64
{ return signal_stop_; }
66
typedef sigc::signal<void> type_signal_start;
67
type_signal_start signal_start()
68
{ return signal_start_; }
70
void start_play(const std::string&);
71
void start_record(const std::string&);
74
int my_system(char* const argv[]);
75
bool on_delay_reboot();
76
bool on_delay_record_reboot();
77
void on_start_record();
78
void on_stop_record();
79
bool on_update_progress();
81
void wait_mplayer_exit(GPid, int);
82
void wait_record_exit(GPid, int);
88
sigc::slot<bool, Glib::IOCondition> out_slot;
89
sigc::connection update_progress_conn;
90
sigc::connection ptm_conn;
91
sigc::connection wait_conn;
92
sigc::connection wait_record_conn;
93
type_signal_stop signal_stop_;
94
type_signal_start signal_start_;
96
std::string playfilename; /* filename (internal)*/
97
std::string recordfilename;
98
std::string channelname;
99
std::string outfilename;
100
std::string outfilenamebase;
101
std::string outfilenameext;
104
Gtk::Window* record_window;
105
Gtk::Label* record_name;
106
Gtk::ProgressBar* progress_bar;
109
int player_child_tem; // 主进程和子进程的连接管道的主进程则(播放)
110
int player_child_tem2; // 子进程端的标准输入,输出 (播放)
112
int player_pid; /* play mplayer's pid (internal)*/
113
int record_pid; /* record mplayer's pid (internal)*/