📄 wxgpaccontrol.cpp
字号:
s_rec->Add(bs, 0, wxALL|wxEXPAND, 2); m_overwrite = new wxCheckBox(this, -1, wxT("Overwrite existing files")); s_rec->Add(m_overwrite); bs = new wxBoxSizer(wxHORIZONTAL); m_usename = new wxCheckBox(this, ID_USE_FILENAME, wxT("Use filename")); m_recfile = new wxTextCtrl(this, 0, wxT("")); bs->Add(m_usename, wxALIGN_CENTER | wxADJUST_MINSIZE); bs->Add(m_recfile, wxALIGN_CENTER | wxADJUST_MINSIZE); s_rec->Add(bs, 0, wxALL|wxEXPAND, 2); s_main->Add(s_rec, 0, wxEXPAND, 0); /*load options*/ GF_Config *cfg = m_pApp->m_user.config; /*general*/ sOpt = gf_cfg_get_key(cfg, "General", "Loop"); m_loop->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "General", "LookForSubtitles"); m_lookforsubs->SetValue((sOpt && !stricmp(sOpt, "no")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "General", "ConsoleOff"); m_noconsole->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "General", "ViewXMT"); m_viewxmt->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); /*systems config*/ sOpt = gf_cfg_get_key(cfg, "Systems", "Language3CC"); if (!sOpt) sOpt = "eng"; u32 select = 0; i=0; while (GF_ISO639_Lang[i]) { /*only use common languages (having both 2- and 3-char code names)*/ if (GF_ISO639_Lang[i+2][0]) { m_lang->Append(wxString(GF_ISO639_Lang[i], wxConvUTF8) ); if (sOpt && !stricmp(sOpt, GF_ISO639_Lang[i+1])) select = m_lang->GetCount() - 1; } i+=3; } m_lang->SetSelection(select); sOpt = gf_cfg_get_key(cfg, "Systems", "ThreadingPolicy"); select = 0; m_thread->Append(wxT("Single Thread")); m_thread->Append(wxT("Mutli Thread")); if (sOpt && !stricmp(sOpt, "Multi")) select = 1; m_thread->Append(wxT("Free")); if (sOpt && !stricmp(sOpt, "Free")) select = 2; m_thread->SetSelection(select); sOpt = gf_cfg_get_key(cfg, "Systems", "ForceSingleClock"); m_singletime->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Systems", "AlwaysDrawBIFS"); m_bifsalwaysdrawn->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); /*audio dec enum*/ sOpt = gf_cfg_get_key(cfg, "Systems", "DefAudioDec"); u32 count = gf_modules_get_count(m_pApp->m_user.modules); GF_BaseDecoder *ifc_d; select = 0; s32 to_sel = 0; for (i=0; i<count; i++) { ifc_d = (GF_BaseDecoder *) gf_modules_load_interface(m_pApp->m_user.modules, i, GF_MEDIA_DECODER_INTERFACE); if (!ifc_d) continue; if (ifc_d->CanHandleStream(ifc_d, GF_STREAM_AUDIO, 0, NULL, 0, 0)) { if (sOpt && !stricmp(ifc_d->module_name, sOpt)) select = to_sel; m_decaudio->Append(wxString(ifc_d->module_name, wxConvUTF8) ); to_sel++; } gf_modules_close_interface((GF_BaseInterface *) ifc_d); } m_decaudio->SetSelection(select); /*video dec enum*/ sOpt = gf_cfg_get_key(cfg, "Systems", "DefVideoDec"); select = to_sel = 0; for (i=0; i<count; i++) { ifc_d = (GF_BaseDecoder *) gf_modules_load_interface(m_pApp->m_user.modules, i, GF_MEDIA_DECODER_INTERFACE); if (!ifc_d) continue; if (ifc_d->CanHandleStream(ifc_d, GF_STREAM_VISUAL, 0, NULL, 0, 0)) { if (sOpt && !stricmp(ifc_d->module_name, sOpt)) select = to_sel; m_decvideo->Append(wxString(ifc_d->module_name, wxConvUTF8) ); to_sel++; } gf_modules_close_interface((GF_BaseInterface *) ifc_d); } m_decvideo->SetSelection(select); /*rendering*/ sOpt = gf_cfg_get_key(cfg, "Rendering", "RendererName"); m_bWas3D = (sOpt && strstr(sOpt, "3D")) ? 1 : 0; m_use3D->SetValue(m_bWas3D ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Rendering", "ForceSceneSize"); m_force_size->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Rendering", "FrameRate"); if (!sOpt) sOpt = "30.0"; select = 0; for (i = 0; i<NUM_RATES; i++) { m_fps->Append(wxString(BIFSRates[i], wxConvUTF8) ); if (sOpt && !stricmp(sOpt, BIFSRates[i]) ) select = i; } m_fps->SetSelection(select); sOpt = gf_cfg_get_key(cfg, "Rendering", "FastRender"); m_fast->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Rendering", "AntiAlias"); m_aa->Append(wxT("None")); m_aa->Append(wxT("Text only")); m_aa->Append(wxT("Complete")); select = 2; if (sOpt && !stricmp(sOpt, "Text")) select = 1; else if (sOpt && !stricmp(sOpt, "None")) select = 0; m_aa->SetSelection(select); sOpt = gf_cfg_get_key(cfg, "Rendering", "BoundingVolume"); m_draw_bounds->Append(wxT("None")); m_draw_bounds->Append(wxT("Box/Rect")); m_draw_bounds->Append(wxT("AABB Tree")); select = 0; if (sOpt && !stricmp(sOpt, "Box")) select = 1; else if (sOpt && !stricmp(sOpt, "AABB")) select = 2; m_draw_bounds->SetSelection(select); /*render2d*/ sOpt = gf_cfg_get_key(cfg, "Render2D", "DirectRender"); m_direct->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Render2D", "ScalableZoom"); m_scalable->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Render2D", "DisableYUV"); m_noyuv->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); SetYUVLabel(); /*graphics driver enum*/ sOpt = gf_cfg_get_key(cfg, "Rendering", "Raster2D"); GF_BaseInterface *ifce; select = to_sel = 0; for (i=0; i<count; i++) { ifce = gf_modules_load_interface(m_pApp->m_user.modules, i, GF_RASTER_2D_INTERFACE); if (!ifce) continue; if (sOpt && !stricmp(((GF_BaseInterface *)ifce)->module_name, sOpt)) select = to_sel; m_graph->Append(wxString(((GF_BaseInterface *)ifce)->module_name, wxConvUTF8) ); gf_modules_close_interface(ifce); to_sel++; } m_graph->SetSelection(select); /*render3d*/ sOpt = gf_cfg_get_key(cfg, "Render3D", "RasterOutlines"); m_raster_outlines->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Render3D", "EmulatePOW2"); m_emulpow2->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Render3D", "PolygonAA"); m_polyaa->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Render3D", "BackFaceCulling"); m_nobackcull->SetValue((sOpt && !stricmp(sOpt, "Off")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Render3D", "Wireframe"); sOpt = gf_cfg_get_key(cfg, "Render3D", "BitmapCopyPixels"); m_copypixels->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Render3D", "DisableRectExt"); m_norectext->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); m_wire->Append(wxT("No Wireframe")); m_wire->Append(wxT("Wireframe Only")); m_wire->Append(wxT("Solid and Wireframe")); sOpt = gf_cfg_get_key(cfg, "Render3D", "Wireframe"); if (sOpt && !stricmp(sOpt, "WireOnly")) m_wire->SetSelection(1); else if (sOpt && !stricmp(sOpt, "WireOnSolid")) m_wire->SetSelection(2); else m_wire->SetSelection(0); m_normals->Append(wxT("Never")); m_normals->Append(wxT("Per Face")); m_normals->Append(wxT("Per Vertex")); sOpt = gf_cfg_get_key(cfg, "Render3D", "DrawNormals"); if (sOpt && !stricmp(sOpt, "PerFace")) m_normals->SetSelection(1); else if (sOpt && !stricmp(sOpt, "PerVertex")) m_normals->SetSelection(2); else m_normals->SetSelection(0); /*video*/ sOpt = gf_cfg_get_key(cfg, "Video", "SwitchResolution"); m_switchres->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Video", "UseHardwareMemory"); m_usehwmem->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Video", "DriverName"); select = to_sel = 0; for (i=0; i<count; i++) { ifce = gf_modules_load_interface(m_pApp->m_user.modules, i, GF_VIDEO_OUTPUT_INTERFACE); if (!ifce) continue; if (sOpt && !stricmp(((GF_BaseInterface *)ifce)->module_name, sOpt)) select = to_sel; m_video->Append(wxString(((GF_BaseInterface *)ifce)->module_name, wxConvUTF8) ); gf_modules_close_interface(ifce); to_sel++; } m_video->SetSelection(select); /*audio*/ sOpt = gf_cfg_get_key(cfg, "Audio", "ForceConfig"); m_forcecfg->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Audio", "NumBuffers"); m_nbbuf->SetValue( sOpt ? wxString(sOpt, wxConvUTF8) : wxT("2")); sOpt = gf_cfg_get_key(cfg, "Audio", "TotalDuration"); m_buflen->SetValue( sOpt ? wxString(sOpt, wxConvUTF8) : wxT("120")); wxCommandEvent event; ForceAudio(event); sOpt = gf_cfg_get_key(cfg, "Audio", "NoResync"); m_noresync->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Audio", "DisableMultiChannel"); m_nomulitch->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); /*driver enum*/ sOpt = gf_cfg_get_key(cfg, "Audio", "DriverName"); select = to_sel = 0; for (i=0; i<count; i++) { ifce = gf_modules_load_interface(m_pApp->m_user.modules, i, GF_AUDIO_OUTPUT_INTERFACE); if (!ifce) continue; if (sOpt && !stricmp(((GF_BaseInterface *)ifce)->module_name, sOpt)) select = to_sel; m_audio->Append(wxString(((GF_BaseInterface *)ifce)->module_name, wxConvUTF8) ); gf_modules_close_interface(ifce); to_sel++; } m_audio->SetSelection(select);#ifdef WIN32 sOpt = gf_cfg_get_key(cfg, "Audio", "DisableNotification"); m_notifs->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); wxCommandEvent audevt; OnSetAudioDriver(audevt);#endif /*font*/ sOpt = gf_cfg_get_key(cfg, "FontEngine", "DriverName"); to_sel = select = 0; for (i=0; i<count; i++) { ifce = gf_modules_load_interface(m_pApp->m_user.modules, i, GF_FONT_RASTER_INTERFACE); if (!ifce) continue; if (sOpt && !stricmp(((GF_BaseInterface *)ifce)->module_name, sOpt)) select = to_sel; m_font->Append(wxString(((GF_BaseInterface *)ifce)->module_name, wxConvUTF8) ); gf_modules_close_interface(ifce); to_sel++; } m_font->SetSelection(select); sOpt = gf_cfg_get_key(cfg, "FontEngine", "FontDirectory"); if (sOpt) m_fontdir->SetLabel(wxString(sOpt, wxConvUTF8) ); sOpt = gf_cfg_get_key(cfg, "FontEngine", "TextureTextMode"); m_texturemode->Append(wxT("Never")); m_texturemode->Append(wxT("3D Only")); m_texturemode->Append(wxT("Always")); if (sOpt && !stricmp(sOpt, "Always")) m_texturemode->SetSelection(2); else if (sOpt && !stricmp(sOpt, "3D")) m_texturemode->SetSelection(1); else m_texturemode->SetSelection(0); /*downloader*/ sOpt = gf_cfg_get_key(cfg, "General", "CacheDirectory"); if (sOpt) m_cachedir->SetLabel(wxString(sOpt, wxConvUTF8) ); sOpt = gf_cfg_get_key(cfg, "Downloader", "CleanCache"); m_cleancache->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "Downloader", "RestartFiles"); m_restartcache->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "SAXLoader", "Progressive"); m_progressive->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); sOpt = gf_cfg_get_key(cfg, "SAXLoader", "MaxDuration"); m_sax_duration->SetValue(sOpt ? wxString(sOpt, wxConvUTF8) : wxT("30")); if (! m_progressive->GetValue()) m_sax_duration->Enable(0); sOpt = gf_cfg_get_key(cfg, "HTTPProxy", "Enabled"); m_use_proxy->SetValue( (sOpt && !stricmp(sOpt, "yes")) ? 1 : 0); char szProxy[GF_MAX_PATH]; strcpy(szProxy, ""); sOpt = gf_cfg_get_key(cfg, "HTTPProxy", "Name"); if (sOpt) { strcat(szProxy, sOpt); sOpt = gf_cfg_get_key(cfg, "HTTPProxy", "Port"); if (sOpt) { strcat(szProxy, ":"); strcat(szProxy, sOpt); } } else { m_use_proxy->SetValue(0); } m_proxy_name->SetValue( wxString((char *)szProxy, wxConvUTF8) ); if (! m_use_proxy->GetValue()) m_proxy_name->Enable(0); /*streaming*/ m_port->Append(wxT("554 (RTSP standard)")); m_port->Append(wxT("7070 (RTSP ext)")); m_port->Append(wxT("80 (RTSP / HTTP tunnel)")); m_port->Append(wxT("8080 (RTSP / HTTP tunnel)")); sOpt = gf_cfg_get_key(cfg, "Streaming", "DefaultPort"); u32 port = 554; Bool force_rtsp = 0; if (sOpt) port = atoi(sOpt); switch (port) { case 8080: m_port->SetSelection(3); force_rtsp = 1; break; case 80: m_port->SetSelection(2); force_rtsp = 1; break; case 7070: m_port->SetSelection(1); break; default: m_port->SetSelection(0); break; } Bool use_rtsp = 0; sOpt = gf_cfg_get_key(cfg, "Streaming", "RTPoverRTSP"); if (sOpt && !stricmp(sOpt, "yes")) use_rtsp = 1; if (force_rtsp) { m_rtsp->SetValue(1); m_rtsp->Enable(0); m_reorder->SetValue(0); m_reorder->Enable(0); } else { m_rtsp->SetValue(use_rtsp ? 1 : 0); m_rtsp->Enable(1); m_reorder->Enable(1); sOpt = gf_cfg_get_key(cfg, "Streaming", "ReorderSize"); m_reorder->SetValue( (sOpt && !stricmp(sOpt, "0")) ? 1 : 0); } sOpt = gf_cfg_get_key(cfg, "Streaming", "RTSPTimeout"); m_timeout->SetValue(sOpt ? wxString(sOpt, wxConvUTF8) : wxT("30000")); sOpt = gf_cfg_get_key(cfg, "Network", "BufferLength"); m_buffer->SetValue(sOpt ? wxString(sOpt, wxConvUTF8) : wxT("3000")); sOpt = gf_cfg_get_key(cfg, "Network", "RebufferLength"); u32 buf_len = 0; if (sOpt) buf_len = atoi(sOpt); if (buf_len) { m_dorebuffer->SetValue(1); m_rebuffer->SetValue(wxString(sOpt, wxConvUTF8)); m_rebuffer->Enable(1); } else { m_dorebuffer->SetValue(0); m_rebuffer->SetValue(wxT("0")); m_rebuffer->Enable(0); } RTPoverRTSP(event); sOpt = gf_cfg_get_key(cfg, "StreamingCache", "RecordDirectory"); if (!sOpt) sOpt = gf_cfg_get_key(cfg, "General", "CacheDirectory"); if (sOpt) m_recdir->SetLabel(wxString(sOpt, wxConvUTF8)); sOpt = gf_cfg_get_key(cfg, "StreamingCache", "KeepExistingFiles"); m_overwrite->SetValue((sOpt && !stricmp(sOpt, "yes")) ? 0 : 1); sOpt = gf_cfg_get_key(cfg, "StreamingCache", "BaseFileName"); if (sOpt) { m_usename->SetValue(1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -