⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wmp4client.cpp

📁 jpeg and mpeg 编解码技术源代码
💻 CPP
字号:

#include "systems.h"
#include "wmp4client.h"
#include "client_process.h"
#include <rtsp/rtsp_client.h>
#include "player_session.h"
#include "player_media.h"
#include "player_util.h"
#include "our_msg_queue.h"
#include "ip_port.h"
#include "media_utils.h"
#include "playlist.h"
#include "our_config_file.h"
#include <rtp/debug.h>
#include <libhttp/http.h>
#include "codec_plugin_private.h"

static int session_paused;
static int screen_size = 2;
static int fullscreen = 0;
static int volume;
CPlayerSession *psptr;

void set_configs (void)
{
	config.read_config_file("Software\\Mpeg4ip", "Config");
	rtsp_set_loglevel(config.get_config_value(CONFIG_RTSP_DEBUG));
	rtp_set_loglevel(config.get_config_value(CONFIG_RTP_DEBUG));
	sdp_set_loglevel(config.get_config_value(CONFIG_SDP_DEBUG));
	http_set_loglevel(config.get_config_value(CONFIG_HTTP_DEBUG));
	volume = config.get_config_value(CONFIG_VOLUME);
	if (config.get_config_value(CONFIG_MUTED) != 0)
		volume = 0;
	if (psptr != NULL) {
		psptr->set_audio_volume(volume);
	}
}
	

int main (int argc, char **argv)
{
	CClientProcess proc;
	SDL_sem *master_sem;
	CMsgQueue master_queue;
	char errmsg[512];
	config.read_config_file("Software\\Mpeg4ip", "Config");

	open_output("wmp4player.log");
	if (proc.enable_communication() < 0) {
		printf("Could not enable communications\n");
		Sleep(10 * 1000);
		close_output();
		return -1;
	}
	initialize_plugins();
	argv++;
	argc--;

	psptr = NULL;
	master_sem = NULL;
	if (*argv == NULL) {
		proc.initial_response(-1, psptr,"No argument to process");
	} else {
		rtsp_set_error_func(player_library_message);
		rtp_set_error_msg_func(player_library_message);
		sdp_set_error_func(player_library_message);
		http_set_error_func(player_library_message);
	
		master_sem = SDL_CreateSemaphore(0);
		psptr = new CPlayerSession(&master_queue, master_sem,
								   *argv);
		int ret = -1;
		errmsg[0] = '\0';
		if (psptr != NULL) {
			ret = parse_name_for_session(psptr, *argv, errmsg, *errmsg, NULL);
			if (ret < 0) {
				//player_debug_message("%s %s", errmsg, name);
				delete psptr;
				psptr = NULL;
			} else {
				
				if (ret > 0) {
					player_debug_message(errmsg);
				}
				
				psptr->set_up_sync_thread();
				psptr->set_screen_location(100, 100);
				
				psptr->set_screen_size(screen_size);
				psptr->set_audio_volume(config.get_config_value(CONFIG_VOLUME));
				if (psptr->play_all_media(TRUE) != 0) {
					snprintf(errmsg, sizeof(*errmsg), "Couldn't start playing");
					delete psptr;
					psptr = NULL;
				}
			}
		}
		proc.initial_response(ret, psptr, errmsg);
	}
	// Either way - we need to loop and wait until we get the
	// terminate message
	int running = 0;
	int state = 0;
	while (running == 0) {
		CMsg *msg;
		running = proc.receive_messages(psptr);
		while ((msg = master_queue.get_message()) != NULL) {
			switch (msg->get_value()) {
			case MSG_SESSION_FINISHED:
				proc.send_message(GUI_MSG_SESSION_FINISHED);
				break;
			case MSG_RECEIVED_QUIT:
				proc.send_message(GUI_MSG_RECEIVED_QUIT);
				break;
			case MSG_SDL_KEY_EVENT:
				uint32_t len;
				const unsigned char *sdl_event = msg->get_message(len);
				proc.send_message(GUI_MSG_SDL_KEY,
								  (void *)sdl_event,
								  len);
				break;
			}
			delete msg;
		}
		if (psptr != NULL) state = psptr->sync_thread(state);
	}
	if (psptr != NULL) {
		delete psptr;
	}
	if (master_sem != NULL) {
		SDL_DestroySemaphore(master_sem);
	}
	  // remove invalid global ports
	
	close_plugins();
	config.write_config_file("Software\\Mpeg4ip", "Config");
	close_output();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -