void COsmo4::EnableLogs(Bool turn_on) { if (turn_on) { m_logs = fopen("\\gpac_logs.txt", "wt"); if (!m_logs) { MessageBox(NULL, _T("Couldn't open log files at file system root"), _T("Disabling logs"), MB_OK); turn_on = 0; } else { gf_log_set_level(GF_LOG_DEBUG); // gf_log_set_tools(0xFFFFFFFF); gf_log_set_tools(GF_LOG_CORE|GF_LOG_NETWORK|GF_LOG_RTP|GF_LOG_SYNC|GF_LOG_CODEC|GF_LOG_MEDIA|GF_LOG_SERVICE); gf_log_set_callback(m_logs, osmo4_do_log); gf_cfg_set_key(m_user.config, "General", "LogLevel", "debug"); } } if (!turn_on) { if (m_logs) { fclose(m_logs); m_logs = 0; } gf_log_set_level(0); gf_log_set_tools(0); gf_log_set_callback(NULL, NULL); gf_cfg_set_key(m_user.config, "General", "LogLevel", "none"); } }
//------------------------------- void CNativeWrapper::SetupLogs() { const char *opt; debug_log("SetupLogs()"); gf_mx_p(m_mx); gf_log_set_tools_levels( gf_cfg_get_key(m_user.config, "General", "Logs") ); gf_log_set_callback(this, on_gpac_log); opt = gf_cfg_get_key(m_user.config, "General", "LogFile"); if (opt) { JavaEnvTh *env = getEnv(); if (env && env->cbk_setLogFile) { env->env->PushLocalFrame(1); jstring js = env->env->NewStringUTF(opt); env->env->CallVoidMethod(env->cbk_obj, env->cbk_setLogFile, js); env->env->PopLocalFrame(NULL); } } gf_mx_v(m_mx); GF_LOG(GF_LOG_INFO, GF_LOG_CORE, ("Osmo4 logs initialized\n")); /* Test for JNI invocations, should work properly int k; for (k = 0 ; k < 512; k++){ GF_LOG(GF_LOG_INFO, GF_LOG_CORE, ("Message %d\n", k)); }*/ }
static void setup_logs() { if (log_file) fclose(log_file); log_file = NULL; gf_log_set_tool_level(GF_LOG_ALL, GF_LOG_ERROR); gf_log_set_callback(NULL, NULL); if (log_rti) { const char *filename = gf_cfg_get_key(user.config, "General", "LogFile"); if (!filename) { gf_cfg_set_key(user.config, "General", "LogFile", "\\gpac_logs.txt"); filename = "\\gpac_logs.txt"; } log_file = gf_f64_open(filename, "a+t"); fprintf(log_file, "!! GPAC RunTime Info for file %s !!\n", the_url); fprintf(log_file, "SysTime(ms)\tSceneTime(ms)\tCPU\tFPS\tMemory(kB)\tObservation\n"); gf_log_set_tool_level(GF_LOG_ALL, GF_LOG_ERROR); gf_log_set_tool_level(GF_LOG_RTI, GF_LOG_DEBUG); gf_log_set_callback(log_file, on_gpac_rti_log); GF_LOG(GF_LOG_DEBUG, GF_LOG_RTI, ("[RTI] System state when enabling log\n")); } else { const char *filename = gf_cfg_get_key(user.config, "General", "LogFile"); if (!filename) { gf_cfg_set_key(user.config, "General", "LogFile", "\\gpac_logs.txt"); filename = "\\gpac_logs.txt"; } const char *logs = gf_cfg_get_key(user.config, "General", "Logs"); if (logs) { if (gf_log_set_tools_levels( logs ) != GF_OK) { } else { if (log_file = gf_f64_open(filename, "a+t")) { gf_log_set_callback(log_file, on_gpac_log); } } } } }
//------------------------------- void CNativeWrapper::SetupLogs() { const char *opt; debug_log("SetupLogs()"); gf_mx_p(m_mx); gf_log_set_tools_levels( gf_cfg_get_key(m_user.config, "General", "Logs") ); gf_log_set_callback(this, on_gpac_log); gf_mx_v(m_mx); GF_LOG(GF_LOG_INFO, GF_LOG_CORE, ("Osmo4 logs initialized\n")); /* Test for JNI invocations, should work properly int k; for (k = 0 ; k < 512; k++){ GF_LOG(GF_LOG_INFO, GF_LOG_CORE, ("Message %d\n", k)); }*/ }
void CGPAXPlugin::UnloadTerm() { if (m_term) { GF_Terminal *a_term = m_term; m_term = NULL; gf_term_del(a_term); } if (m_user.modules) gf_modules_del(m_user.modules); if (m_user.config) gf_cfg_del(m_user.config); if (m_pLogs) fclose(m_pLogs); m_pLogs = NULL; gf_log_set_callback(NULL, NULL); memset(&m_user, 0, sizeof(m_user)); gf_sys_close(); }
/// <summary> /// Entry point for the application /// </summary> /// <param name="hInstance">handle to the application instance</param> /// <param name="hPrevInstance">always 0</param> /// <param name="lpCmdLine">command line arguments</param> /// <param name="nCmdShow">whether to display minimized, maximized, or normally</param> /// <returns>status</returns> int APIENTRY wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow) { CColorBasics application; //params: DASHout *dasher; loook_opt *options; #ifdef _DEBUG RedirectIOToConsole(); #endif options = loook_init(); gf_sys_init(GF_MemTrackerNone); #ifdef USE_GPAC_LOG gf_log_set_tool_level(GF_LOG_DASH, GF_LOG_DEBUG); if (gf_log_tool_level_on(GF_LOG_DASH, GF_LOG_DEBUG)) { printf("log on"); } else { printf("log off"); } gf_log_set_callback(NULL, on_gpac_log); #endif dasher = muxer_init(options); if(!dasher){ return 1; } application.setDasher(dasher); application.Run(hInstance, nCmdShow, dasher); /* KinectSensor sensor; foreach (var potentialSensor in KinectSensor.KinectSensors) { if (potentialSensor.Status == KinectStatus.Connected) { this.sensor = potentialSensor; break; } }*/ }
void COsmo4AppView::SetupLogs() { const char *opt; #ifndef GPAC_GUI_ONLY gf_mx_p(m_mx); if (do_log) { gf_log_set_tool_level(GF_LOG_ALL, GF_LOG_NONE); do_log = 0; } /*setup GPAC logs: log all errors*/ opt = gf_cfg_get_key(m_user.config, "General", "Logs"); if (opt && !strstr(opt, "none")){ const char *filename = gf_cfg_get_key(m_user.config, "General", "LogFile"); if (!filename) { gf_cfg_set_key(m_user.config, "General", "LogFile", "\\data\\gpac_logs.txt"); filename = "\\data\\gpac_logs.txt"; } m_Logs = gf_f64_open(filename, "wt"); if (!m_Logs) { MessageBox("Cannot open log file - disabling logs", "Warning !"); } else { MessageBox("Debug logs enabled!", filename); do_log = 1; gf_log_set_tools_levels( opt ); } } if (!do_log) { gf_log_set_tool_level(GF_LOG_ALL, GF_LOG_ERROR); if (m_Logs) fclose(m_Logs); } gf_log_set_callback(this, on_gpac_log); gf_mx_v(m_mx); GF_LOG(GF_LOG_DEBUG, GF_LOG_CORE, ("Osmo4 logs initialized\n")); #endif }
int stream_file_rtp(int argc, char **argv) { GF_ISOMRTPStreamer *file_streamer; char *sdp_file = "session.sdp"; char *ip_dest = "127.0.0.1"; char *ifce_addr = NULL; char *inName = NULL; char *logs=NULL; FILE *logfile=NULL; u16 port = 7000; u32 ttl = 1; Bool loop = 1; Bool mem_track = 0; Bool force_mpeg4 = 0; u32 path_mtu = 1450; u32 i; for (i = 1; i < (u32) argc ; i++) { char *arg = argv[i]; if (arg[0] != '-') { if (inName) { fprintf(stderr, "Error - 2 input names specified, please check usage\n"); return 1; } inName = arg; } else if (!stricmp(arg, "-noloop")) loop = 0; else if (!stricmp(arg, "-mpeg4")) force_mpeg4 = 1; else if (!strnicmp(arg, "-port=", 6)) port = atoi(arg+6); else if (!strnicmp(arg, "-mtu=", 5)) path_mtu = atoi(arg+5); else if (!strnicmp(arg, "-dst=", 5)) ip_dest = arg+5; else if (!strnicmp(arg, "-ttl=", 5)) ttl = atoi(arg+5); else if (!strnicmp(arg, "-ifce=", 6)) ifce_addr = arg+6; else if (!strnicmp(arg, "-sdp=", 5)) sdp_file = arg+5; else if (!stricmp(arg, "-mem-track")) mem_track = 1; else if (!strnicmp(arg, "-logs=", 6)) logs = arg+6; else if (!strnicmp(arg, "-lf=", 4)) logfile = gf_f64_open(arg+4, "wt"); } gf_sys_init(mem_track); if (logs) gf_log_set_tools_levels(logs); else gf_log_set_tool_level(GF_LOG_RTP, GF_LOG_INFO); //set to debug to have packet list if (logfile) { gf_log_set_callback(logfile, on_logs); } if (!gf_isom_probe_file(inName)) { fprintf(stderr, "File %s is not a valid ISO Media file and cannot be streamed\n", inName); if (logfile) fclose(logfile); gf_sys_close(); return 1; } file_streamer = gf_isom_streamer_new(inName, ip_dest, port, loop, force_mpeg4, path_mtu, ttl, ifce_addr); if (!file_streamer) { fprintf(stderr, "Cannot create file streamer\n"); } else { u32 check = 50; fprintf(stderr, "Starting streaming %s to %s:%d\n", inName, ip_dest, port); gf_isom_streamer_write_sdp(file_streamer, sdp_file); while (1) { gf_isom_streamer_send_next_packet(file_streamer, 0, 0); check--; if (!check) { if (gf_prompt_has_input()) { char c = (char) gf_prompt_get_char(); if (c=='q') break; } check = 50; } } gf_isom_streamer_del(file_streamer); } if (logfile) fclose(logfile); gf_sys_close(); return 0; }
//Create window message fuction. when the window is created, also initialize a instance of //GPAC player instance. LRESULT CGPAXPlugin::OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if (m_term) return 0; const char *str; if (m_hWnd==NULL) return 0; gf_sys_init(0); //Create a structure m_user for initialize the terminal. the parameters to set: //1)config file path //2)Modules file path //3)window handler //4)EventProc memset(&m_user, 0, sizeof(m_user)); gf_log_set_tool_level(GF_LOG_ALL, GF_LOG_ERROR); m_user.config = gf_cfg_init(NULL, NULL); if(!m_user.config) { #ifdef _WIN32_WCE ::MessageBox(NULL, _T("GPAC Configuration file not found"), _T("Fatal Error"), MB_OK); #else ::MessageBox(NULL, "GPAC Configuration file not found", "Fatal Error", MB_OK); #endif goto err_exit; } /*check log file*/ str = gf_cfg_get_key(m_user.config, "General", "LogFile"); if (str) { m_pLogs = gf_f64_open(str, "wt"); if (m_pLogs) gf_log_set_callback(m_pLogs, gpax_do_log); } /*if logs are specified, use them*/ gf_log_set_tools_levels( gf_cfg_get_key(m_user.config, "General", "Logs") ); str = gf_cfg_get_key(m_user.config, "General", "ModulesDirectory"); m_user.modules = gf_modules_new(str, m_user.config); if(!gf_modules_get_count(m_user.modules)) goto err_exit; m_user.os_window_handler = m_hWnd; m_user.opaque = this; m_user.EventProc = GPAX_EventProc; //create a terminal m_term = gf_term_new(&m_user); if (!m_term) goto err_exit; gf_term_set_option(m_term, GF_OPT_AUDIO_VOLUME, 100); LoadDATAUrl(); RECT rc; ::GetWindowRect(m_hWnd, &rc); m_width = rc.right-rc.left; m_height = rc.bottom-rc.top; if (m_bAutoStart && strlen(m_url)) Play(); return 0; //Error Processing err_exit: if(m_user.modules) gf_modules_del(m_user.modules); m_user.modules = NULL; if(m_user.config) gf_cfg_del(m_user.config); m_user.config = NULL; gf_sys_close(); return 1; }
BOOL Osmo4::InitInstance() { CCommandLineInfo cmdInfo; m_logs = NULL; m_term = NULL; memset(&m_user, 0, sizeof(GF_User)); /*get Osmo4.exe path*/ strcpy((char *) szApplicationPath, AfxGetApp()->m_pszHelpFilePath); while (szApplicationPath[strlen((char *) szApplicationPath)-1] != '\\') szApplicationPath[strlen((char *) szApplicationPath)-1] = 0; if (szApplicationPath[strlen((char *) szApplicationPath)-1] != '\\') strcat(szApplicationPath, "\\"); gf_sys_init(0); /*setup user*/ memset(&m_user, 0, sizeof(GF_User)); Bool first_launch = 0; /*init config and modules*/ m_user.config = gf_cfg_init(NULL, &first_launch); if (!m_user.config) { MessageBox(NULL, "GPAC Configuration file not found", "Fatal Error", MB_OK); m_pMainWnd->PostMessage(WM_CLOSE); } char *name = gf_cfg_get_filename(m_user.config); char *sep = strrchr(name, '\\'); if (sep) sep[0] = 0; strcpy(szUserPath, name); if (sep) sep[0] = '\\'; gf_free(name); const char *opt = gf_cfg_get_key(m_user.config, "General", "SingleInstance"); m_SingleInstance = (opt && !stricmp(opt, "yes")) ? 1 : 0; m_hMutex = NULL; if (m_SingleInstance) { m_hMutex = CreateMutex(NULL, FALSE, "Osmo4_GPAC_INSTANCE"); if ( GetLastError() == ERROR_ALREADY_EXISTS ) { char szDIR[1024]; if (m_hMutex) CloseHandle(m_hMutex); m_hMutex = NULL; if (!static_gpac_hwnd || !IsWindow(static_gpac_hwnd) ) { ::MessageBox(NULL, "Osmo4 ghost process detected", "Error at last shutdown" , MB_OK); } else { ::SetForegroundWindow(static_gpac_hwnd); if (m_lpCmdLine && strlen(m_lpCmdLine)) { DWORD res; u32 len; char *the_url, *cmd; GetCurrentDirectory(1024, szDIR); if (szDIR[strlen(szDIR)-1] != '\\') strcat(szDIR, "\\"); cmd = (char *)(const char *) m_lpCmdLine; strcpy(static_szCmdLine, ""); if (cmd[0]=='"') cmd+=1; if (!strnicmp(cmd, "-queue ", 7)) { strcat(static_szCmdLine, "-queue "); cmd += 7; } the_url = gf_url_concatenate(szDIR, cmd); if (!the_url) { strcat(static_szCmdLine, cmd); } else { strcat(static_szCmdLine, the_url); gf_free(the_url); } while ( (len = strlen(static_szCmdLine)) ) { char s = static_szCmdLine[len-1]; if ((s==' ') || (s=='"')) static_szCmdLine[len-1]=0; else break; } ::SendMessageTimeout(static_gpac_hwnd, WM_NEWINSTANCE, 0, 0, 0, 1000, &res); } } return FALSE; } } #if 0 // Standard initialization #ifdef _AFXDLL Enable3dControls(); // Call this when using MFC in a shared DLL #else Enable3dControlsStatic(); // Call this when linking to MFC statically #endif #endif SetRegistryKey(_T("GPAC")); CMainFrame* pFrame = new CMainFrame; m_pMainWnd = pFrame; pFrame->LoadFrame(IDR_MAINFRAME, WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE, NULL, NULL); m_pMainWnd->DragAcceptFiles(); if (m_SingleInstance) static_gpac_hwnd = m_pMainWnd->m_hWnd; const char *str = gf_cfg_get_key(m_user.config, "General", "ModulesDirectory"); m_user.modules = gf_modules_new(str, m_user.config); if (!m_user.modules || ! gf_modules_get_count(m_user.modules) ) { MessageBox(NULL, "No modules available - system cannot work", "Fatal Error", MB_OK); m_pMainWnd->PostMessage(WM_CLOSE); } else if (first_launch) { /*first launch, register all files ext*/ u32 i; for (i=0; i<gf_modules_get_count(m_user.modules); i++) { GF_InputService *ifce = (GF_InputService *) gf_modules_load_interface(m_user.modules, i, GF_NET_CLIENT_INTERFACE); if (!ifce) continue; if (ifce) { ifce->CanHandleURL(ifce, "test.test"); gf_modules_close_interface((GF_BaseInterface *)ifce); } } /*set some shortcuts*/ gf_cfg_set_key(m_user.config, "Shortcuts", "VolumeUp", "ctrl+Up"); gf_cfg_set_key(m_user.config, "Shortcuts", "VolumeDown", "ctrl+Down"); gf_cfg_set_key(m_user.config, "Shortcuts", "FastRewind", "ctrl+Left"); gf_cfg_set_key(m_user.config, "Shortcuts", "FastForward", "ctrl+Right"); gf_cfg_set_key(m_user.config, "Shortcuts", "Play", "ctrl+ "); } /*check log file*/ str = gf_cfg_get_key(m_user.config, "General", "LogFile"); if (str) { m_logs = gf_f64_open(str, "wt"); gf_log_set_callback(m_logs, osmo4_do_log); } else m_logs = NULL; /*set log level*/ if (gf_log_set_tools_levels(gf_cfg_get_key(m_user.config, "General", "Logs")) != GF_OK) fprintf(stdout, "osmo4: invalid log level specified\n"); m_user.opaque = this; m_user.os_window_handler = pFrame->m_pWndView->m_hWnd; m_user.EventProc = Osmo4_EventProc; m_reset = 0; orig_width = 320; orig_height = 240; gf_set_progress_callback(this, Osmo4_progress_cbk); m_term = gf_term_new(&m_user); if (! m_term) { MessageBox(NULL, "Cannot load GPAC Terminal", "Fatal Error", MB_OK); m_pMainWnd->PostMessage(WM_CLOSE); return TRUE; } SetOptions(); UpdateRenderSwitch(); pFrame->SendMessage(WM_SETSIZE, orig_width, orig_height); pFrame->m_Address.ReloadURLs(); pFrame->m_Sliders.SetVolume(); m_reconnect_time = 0; ParseCommandLine(cmdInfo); start_mode = 0; if (! cmdInfo.m_strFileName.IsEmpty()) { pFrame->m_pPlayList->QueueURL(cmdInfo.m_strFileName); pFrame->m_pPlayList->RefreshList(); pFrame->m_pPlayList->PlayNext(); } else { char sPL[MAX_PATH]; strcpy((char *) sPL, szUserPath); strcat(sPL, "gpac_pl.m3u"); pFrame->m_pPlayList->OpenPlayList(sPL); const char *sOpt = gf_cfg_get_key(GetApp()->m_user.config, "General", "PLEntry"); if (sOpt) { s32 count = (s32)gf_list_count(pFrame->m_pPlayList->m_entries); pFrame->m_pPlayList->m_cur_entry = atoi(sOpt); if (pFrame->m_pPlayList->m_cur_entry>=count) pFrame->m_pPlayList->m_cur_entry = count-1; } else { pFrame->m_pPlayList->m_cur_entry = -1; } #if 0 if (pFrame->m_pPlayList->m_cur_entry>=0) { start_mode = 1; pFrame->m_pPlayList->Play(); } #endif sOpt = gf_cfg_get_key(GetApp()->m_user.config, "General", "StartupFile"); if (sOpt) gf_term_connect(m_term, sOpt); } pFrame->SetFocus(); pFrame->SetForegroundWindow(); return TRUE; }