📄 mp4if.cpp
字号:
#include "stdafx.h"
#include "mp4if.h"
#include "our_config_file.h"
CMP4If::CMP4If (CString &name)
{
m_process = new CMP4Process(name);
m_audio_volume = config.get_config_value(CONFIG_VOLUME);
m_state = MP4IF_STATE_PLAY;
m_fullscreen_state = FALSE;
m_screen_size = 1;
}
CMP4If::~CMP4If (void)
{
delete m_process;
}
int CMP4If::get_initial_response (CString &errmsg)
{
int retval;
msg_initial_resp_t msg;
retval = m_process->get_initial_response(&msg, errmsg);
if (retval >= 0) {
m_is_seekable = msg.session_is_seekable;
m_has_audio = msg.has_audio;
m_max_time = msg.max_time;
}
return retval;
}
int CMP4If::set_audio_volume (int val)
{
int ret;
if (m_process == NULL) {
return -1;
}
ret = client_read_config();
if (ret == 0) {
m_audio_volume = val;
} else {
return ret;
}
return 0;
}
int CMP4If::get_mute (void)
{
return config.get_config_value(CONFIG_MUTED);
}
int CMP4If::toggle_mute (void)
{
int ret;
if (m_process == NULL) {
return -1;
}
config.set_config_value(CONFIG_MUTED,
config.get_config_value(CONFIG_MUTED) == 0 ?
1 : 0);
ret = client_read_config();
return ret;
}
int CMP4If::set_screen_size (int val)
{
int ret;
uint64_t retvalue;
if (m_process == NULL) {
return -1;
}
ret = m_process->send_message(CLIENT_MSG_SET_SCREEN_SIZE,
&retvalue,
(const char *)&val,
sizeof(int));
if (ret == 0) {
m_screen_size = val;
} else {
return ret;
}
return 0;
}
int CMP4If::play (void)
{
int ret;
uint64_t retvalue;
client_msg_play_t cmp;
if (m_process == NULL) {
return -1;
}
if (m_state == MP4IF_STATE_PAUSE)
cmp.start_from_begin = FALSE;
else
cmp.start_from_begin = TRUE;
cmp.start_time = 0.0;
ret = m_process->send_message(CLIENT_MSG_PLAY,
&retvalue,
(const char *)&cmp,
sizeof(cmp));
m_state = MP4IF_STATE_PLAY;
return ret;
}
int CMP4If::pause (void)
{
int ret;
uint64_t retvalue;
if (m_process == NULL) {
return -1;
}
if (m_state == MP4IF_STATE_PLAY) {
ret = m_process->send_message(CLIENT_MSG_PAUSE,
&retvalue);
m_state = MP4IF_STATE_PAUSE;
}
return ret;
}
int CMP4If::stop (void)
{
int ret = pause();
m_state = MP4IF_STATE_STOP;
return ret;
}
int CMP4If::seek_to (double time)
{
if (m_state == MP4IF_STATE_PLAY) {
pause();
}
int ret;
uint64_t retvalue;
if (m_process == NULL) {
return -1;
}
client_msg_play_t cmp;
cmp.start_from_begin = time == 0.0 ? TRUE : FALSE;
cmp.start_time = time;
ret = m_process->send_message(CLIENT_MSG_PLAY,
&retvalue,
(const char *)&cmp,
sizeof(cmp));
m_state = MP4IF_STATE_PLAY;
return ret;
}
int CMP4If::client_read_config (void)
{
config.write_config_file("Software\\Mpeg4ip", "Config");
return m_process->send_message(CLIENT_READ_CONFIG_FILE, NULL);
}
bool CMP4If::get_current_time (uint64_t *time)
{
return m_process->send_message(CLIENT_MSG_GET_CURRENT_TIME, time);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -