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

📄 wxgpaccontrol.cpp

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 CPP
📖 第 1 页 / 共 3 页
字号:
/* *			GPAC - Multimedia Framework C SDK * *			Copyright (c) Jean Le Feuvre 2000-2005 *					All rights reserved * *  This file is part of GPAC / Osmo4 wxWidgets GUI * *  GPAC is free software; you can redistribute it and/or modify *  it under the terms of the GNU Lesser General Public License as published by *  the Free Software Foundation; either version 2, or (at your option) *  any later version. *    *  GPAC is distributed in the hope that it will be useful, *  but WITHOUT ANY WARRANTY; without even the implied warranty of *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the *  GNU Lesser General Public License for more details. *    *  You should have received a copy of the GNU Lesser General Public *  License along with this library; see the file COPYING.  If not, write to *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  * *		 */#include "wxOsmo4.h"#include <gpac/options.h>#include <gpac/modules/codec.h>#include <gpac/modules/raster2d.h>#include <gpac/modules/font.h>#include <gpac/modules/audio_out.h>#include <gpac/modules/video_out.h>#include <gpac/iso639.h>#include "wxGPACControl.h"#define NUM_RATES 11static char *BIFSRates[11] = {	"5.0",	"7.5",	"10.0",	"12.5",	"15.0",	"24.0",	"25.0",	"30.0",	"50.0",	"60.0",	"100.0"};void wxGPACControl::SetYUVLabel(){	u32 yuv_format = gf_term_get_option(m_pApp->m_term, GF_OPT_YUV_FORMAT);	if (!yuv_format) {		m_yuvtxt->SetLabel(wxT("(No YUV used)"));	} else {		char str[100];		sprintf(str, "(%s used)", gf_4cc_to_str(yuv_format));		m_yuvtxt->SetLabel(wxString(str, wxConvUTF8) );	}}wxGPACControl::wxGPACControl(wxWindow *parent)             : wxDialog(parent, -1, wxString(wxT("GPAC Control Panel"))){	const char *sOpt;	SetSize(320, 240);	u32 i;	wxBoxSizer *bs;	Centre();	m_pApp = (wxOsmo4Frame *)parent;	s_main = new wxBoxSizer(wxVERTICAL);	s_header = new wxBoxSizer(wxHORIZONTAL);	//s_header->Add(new wxStaticText(this, 0, wxT("Category"), wxDefaultPosition, wxSize(60, 20)), wxALIGN_CENTER);	m_select = new wxComboBox(this, ID_SELECT, wxT(""), wxDefaultPosition, wxSize(120, 30), 0, NULL, wxCB_READONLY);	s_header->Add(m_select, 2, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_header->Add( new wxButton(this, ID_APPLY, wxT("Apply"), wxDefaultPosition, #ifdef WIN32		wxSize(40, 20)#else		wxSize(40, 30)#endif		),		1, wxALIGN_TOP|wxALIGN_RIGHT|wxADJUST_MINSIZE);	s_main->Add(s_header, 0, wxEXPAND, 0);			/*general section*/	s_general = new wxBoxSizer(wxVERTICAL);	m_loop = new wxCheckBox(this, 0, wxT("Loop at End"), wxPoint(10, 40), wxSize(140, 20));	s_general->Add(m_loop);	m_lookforsubs = new wxCheckBox(this, 0, wxT("Look for Subtitles"), wxPoint(180, 40), wxSize(140, 20));	s_general->Add(m_lookforsubs);	m_noconsole = new wxCheckBox(this, 0, wxT("Disable console messages"), wxPoint(10, 80), wxSize(180, 20));	s_general->Add(m_noconsole);	m_viewxmt = new wxCheckBox(this, 0, wxT("View graph in XMT-A format"), wxPoint(10, 120), wxSize(180, 20));	s_general->Add(m_viewxmt);	s_main->Add(s_general, 0, wxEXPAND, 0);	/*MPEG-4 systems*/	s_mpeg4 = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Prefered Stream Language")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_lang = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_lang, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_mpeg4->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Decoder Threading Mode")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_thread = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_thread, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_mpeg4->Add(bs, 0, wxALL|wxEXPAND, 2);	m_bifsalwaysdrawn = new wxCheckBox(this, 0, wxT("Always draw late BIFS frames"));	s_mpeg4->Add(m_bifsalwaysdrawn);	m_singletime = new wxCheckBox(this, 0, wxT("Force Single Timeline"));	s_mpeg4->Add(m_singletime);	s_main->Add(s_mpeg4, 0, wxEXPAND, 0);	/*media decoders*/	s_mdec = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Prefered Audio Output")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_decaudio = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_decaudio, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_mdec->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Prefered Video Output")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_decvideo = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_decvideo, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_mdec->Add(bs, 0, wxALL|wxEXPAND, 2);	s_main->Add(s_mdec, 0, wxEXPAND, 0);	/*Rendering*/	s_rend = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Target Frame Rate")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_fps = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_fps, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_rend->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Anti-Aliasing")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_aa = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_aa, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_rend->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Graphics Driver")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_graph = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_graph, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_rend->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	m_draw_bounds = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(new wxStaticText(this, 0, wxT("Bounds")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	bs->Add(m_draw_bounds, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_rend->Add(bs, 0, wxALL|wxEXPAND, 2);	m_fast = new wxCheckBox(this, 0, wxT("Fast Rendering"));	m_force_size = new wxCheckBox(this, 0, wxT("Force Scene Size"));	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(m_fast, wxALIGN_CENTER | wxADJUST_MINSIZE);	bs->Add(m_force_size, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_rend->Add(bs, 0, wxALL|wxEXPAND, 2);	m_use3D = new wxCheckBox(this, 0, wxT("Use 3D Renderer"));	s_rend->Add(m_use3D, 0, wxALL|wxEXPAND, 2);	m_bWas3D = m_use3D->GetValue();	s_main->Add(s_rend, 0, wxEXPAND, 0);		/*Render 2D*/	s_rend2d = new wxBoxSizer(wxVERTICAL);	m_direct = new wxCheckBox(this, 0, wxT("Direct Rendering"));	s_rend2d->Add(m_direct, 0, wxALL|wxEXPAND, 2);	m_scalable = new wxCheckBox(this, 0, wxT("Scalable Zoom"));	s_rend2d->Add(m_scalable, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	m_noyuv = new wxCheckBox(this, 0, wxT("Disable YUV hardware"));	bs->Add(m_noyuv, wxALIGN_CENTER | wxADJUST_MINSIZE);	m_yuvtxt = new wxStaticText(this, 0, wxT("(No YUV used)"), wxDefaultPosition, wxSize(60, 20), wxALIGN_LEFT);	bs->Add(m_yuvtxt, wxALIGN_CENTER|wxADJUST_MINSIZE);	s_rend2d->Add(bs, 0, wxALL|wxEXPAND, 2);	s_main->Add(s_rend2d, 0, wxEXPAND, 0);	/*Render 3D*/	s_rend3d = new wxBoxSizer(wxVERTICAL);	m_raster_outlines = new wxCheckBox(this, 0, wxT("Use OpenGL Raster outlines"));	s_rend3d->Add(m_raster_outlines, 0, wxALL|wxEXPAND, 2);	m_polyaa = new wxCheckBox(this, 0, wxT("Enable polygon anti-aliasing"));	s_rend3d->Add(m_polyaa, 0, wxALL|wxEXPAND, 2);	m_nobackcull = new wxCheckBox(this, 0, wxT("Disable backface culling"));	s_rend3d->Add(m_nobackcull, 0, wxALL|wxEXPAND, 2);		bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Wireframe mode")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_wire = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_wire, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_rend3d->Add(bs, 0, wxALL|wxEXPAND, 2);		bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Draw Normals")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_normals = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_normals, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_rend3d->Add(bs, 0, wxALL|wxEXPAND, 2);	m_emulpow2 = new wxCheckBox(this, 0, wxT("Emulate power-of-two textures for video"));	s_rend3d->Add(m_emulpow2, 0, wxALL|wxEXPAND, 2);	m_norectext = new wxCheckBox(this, 0, wxT("Disable rectangular texture extensions"));	s_rend3d->Add(m_norectext, 0, wxALL|wxEXPAND, 2);	m_copypixels = new wxCheckBox(this, 0, wxT("Bitmap node uses direct pixel copy"));	s_rend3d->Add(m_copypixels, 0, wxALL|wxEXPAND, 2);	s_main->Add(s_rend3d, 0, wxEXPAND, 0);	/*video*/	s_video = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Video Driver")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	m_video = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_video , wxALIGN_CENTER | wxADJUST_MINSIZE);	s_video->Add(bs, 0, wxALL|wxEXPAND, 2);	m_switchres = new wxCheckBox(this, 0, wxT("Change video resolution in fullscreen"));	s_video->Add(m_switchres, 0, wxALL|wxEXPAND, 2);	m_usehwmem = new wxCheckBox(this, 0, wxT("Use hardware memory in 2D mode"));	s_video->Add(m_usehwmem, 0, wxALL|wxEXPAND, 2);	s_main->Add(s_video, 0, wxEXPAND, 0);		/*audio*/	s_audio = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Audio Driver")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_audio = new wxComboBox(this, ID_AUDIO_DRIVER, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_audio, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_audio->Add(bs, 0, wxALL|wxEXPAND, 2);	m_forcecfg = new wxCheckBox(this, ID_FORCE_AUDIO, wxT("Force Audio Config"));	m_forcecfg->SetValue(1);	s_audio->Add(m_forcecfg, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Number of buffers")), wxALIGN_CENTER|wxADJUST_MINSIZE);	m_nbbuf = new wxSpinCtrl(this, -1, wxT(""), wxDefaultPosition, wxSize(20, 20), wxSP_WRAP | wxSP_ARROW_KEYS, 1, 30, 15);	m_nbbuf->SetValue(8);	bs->Add(m_nbbuf, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_audio->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Total length in ms")), wxALIGN_CENTER | wxADJUST_MINSIZE);	m_buflen = new wxSpinCtrl(this, -1, wxT(""), wxDefaultPosition, wxSize(20, 20), wxSP_WRAP | wxSP_ARROW_KEYS, 1, 1000);	m_buflen->SetValue(400);	bs->Add(m_buflen, wxALIGN_CENTER | wxADJUST_MINSIZE|wxLEFT,10);	s_audio->Add(bs, 0, wxALL|wxEXPAND, 2);	m_noresync = new wxCheckBox(this, -1, wxT("Disable Resynchronization"));	s_audio->Add(m_noresync);	m_nomulitch = new wxCheckBox(this, -1, wxT("Disable Multichannel"));	s_audio->Add(m_nomulitch);#ifdef WIN32	m_notifs = new wxCheckBox(this, -1, wxT("Disable DirectSound Notifications"));	s_audio->Add(m_notifs);#endif	s_main->Add(s_audio, 0, wxEXPAND, 0);		/*font*/	s_font = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Font Engine")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	m_font = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_font, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_font->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("System Font Directory")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	m_fontdir = new wxButton(this, ID_FONT_DIR, wxT("..."), wxDefaultPosition, wxDefaultSize);	bs->Add(m_fontdir, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_font->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Text Texturing Mode")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	m_texturemode = new wxComboBox(this, 0, wxT(""), wxDefaultPosition, wxDefaultSize, 0, NULL, wxCB_READONLY);	bs->Add(m_texturemode, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_font->Add(bs, 0, wxALL|wxEXPAND, 2);	s_main->Add(s_font, 0, wxEXPAND, 0);	/*download*/	s_dnld = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Cache Directory")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	m_cachedir = new wxButton(this, ID_CACHE_DIR, wxT("..."));	bs->Add(m_cachedir, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_dnld->Add(bs, 0, wxALL|wxEXPAND, 2);	m_cleancache = new wxCheckBox(this, -1, wxT("Remove temp files on exit"));	s_dnld->Add(m_cleancache);	m_restartcache = new wxCheckBox(this, -1, wxT("Always redownload incomplete cached files"));	s_dnld->Add(m_restartcache);	bs = new wxBoxSizer(wxHORIZONTAL);	m_progressive = new wxCheckBox(this, ID_PROGRESSIVE, wxT("XML progressive load"));	bs->Add(m_progressive, wxALIGN_CENTER | wxADJUST_MINSIZE);	m_sax_duration = new wxTextCtrl(this, 0, wxT(""), wxPoint(10, 120), wxSize(60, 20));	bs->Add(m_sax_duration, wxALIGN_CENTER | wxADJUST_MINSIZE);	bs->Add(new wxStaticText(this, 0, wxT("max load slice (ms)")), wxADJUST_MINSIZE | wxALIGN_CENTER);	s_dnld->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	m_use_proxy = new wxCheckBox(this, ID_USE_PROXY, wxT("Use proxy"));	bs->Add(m_use_proxy, wxALIGN_CENTER | wxADJUST_MINSIZE);	m_proxy_name = new wxTextCtrl(this, 0, wxT(""), wxPoint(10, 120), wxSize(60, 20));	bs->Add(m_proxy_name, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_dnld->Add(bs, 0, wxALL|wxEXPAND, 2);	s_main->Add(s_dnld, 0, wxEXPAND, 0);	/*streaming*/	s_stream = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Default RTSP port")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	m_port = new wxComboBox(this, ID_RTSP_PORT, wxT(""), wxPoint(160, 40), wxSize(140, 30), 0, NULL, wxCB_READONLY);	bs->Add(m_port, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_stream->Add(bs, 0, wxALL|wxEXPAND, 2);	m_rtsp = new wxCheckBox(this, ID_RTP_OVER_RTSP, wxT("RTP over RTSP"), wxPoint(10, 80), wxSize(140, 20));	m_reorder = new wxCheckBox(this, -1, wxT("use RTP reordering"), wxPoint(160, 80), wxSize(130, 20));	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(m_rtsp, wxALIGN_CENTER | wxADJUST_MINSIZE);	bs->Add(m_reorder, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_stream->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	m_timeout = new wxTextCtrl(this, 0, wxT(""), wxPoint(10, 120), wxSize(60, 20));	bs->Add(new wxStaticText(this, 0, wxT("Control Timeout (ms): ")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	bs->Add(m_timeout, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_stream->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	m_buffer = new wxTextCtrl(this, 0, wxT(""), wxPoint(10, 150), wxSize(60, 20));	bs->Add(new wxStaticText(this, 0, wxT("Media Buffering (ms): ")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	bs->Add(m_buffer, wxALIGN_CENTER | wxADJUST_MINSIZE);	s_stream->Add(bs, 0, wxALL|wxEXPAND, 2);	bs = new wxBoxSizer(wxHORIZONTAL);	m_dorebuffer = new wxCheckBox(this, ID_RTSP_REBUFFER, wxT("Rebuffer if below"));	bs->Add(m_dorebuffer, wxALIGN_CENTER | wxADJUST_MINSIZE);	m_rebuffer = new wxTextCtrl(this, 0, wxT(""), wxPoint(200, 180), wxSize(60, 20));	bs->Add(m_rebuffer, wxALIGN_CENTER | wxADJUST_MINSIZE);	m_rebuffer->Disable();	s_stream->Add(bs, 0, wxALL|wxEXPAND, 2);	s_main->Add(s_stream, 0, wxEXPAND, 0);	/*streaming cache*/	s_rec = new wxBoxSizer(wxVERTICAL);	bs = new wxBoxSizer(wxHORIZONTAL);	bs->Add(new wxStaticText(this, 0, wxT("Record To: ")), wxALIGN_CENTER | wxADJUST_MINSIZE | wxALIGN_RIGHT);	m_recdir = new wxButton(this, ID_RECORD_DIR, wxT("..."));	bs->Add(m_recdir, wxALIGN_CENTER | wxADJUST_MINSIZE);

⌨️ 快捷键说明

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