add libdav1d codec, add remap_a/v_codec option keywords
[goodguy/cinelerra.git] / cinelerra-5.1 / cinelerra / main.C
index 472578718657664d7b230ca445cd08622e8c7931..6833425d0b7d1d30aafc08c945f3e25fbb3475d1 100644 (file)
 #include <locale.h>
 #include <stdlib.h>
 #include <string.h>
+#include <sys/time.h>
+#include <sys/resource.h>
 
 #ifdef LEAKER
-#define STRC(v) printf("==new %p from %p sz %jd\n", v, __builtin_return_address(0), n)
+#if 0  // track allocators
+#include <execinfo.h>
+#define BT_BUF_SIZE 100
+static void leaker()
+{
+       void *buffer[BT_BUF_SIZE];
+       int nptrs = backtrace(buffer, BT_BUF_SIZE);
+       char **trace = backtrace_symbols(buffer, nptrs);
+       if( !trace ) return;
+       for( int i=0; i<nptrs; ) printf("%s ", trace[i++]);
+       printf("\n");
+        free(trace);
+}
+#define STRB ;leaker()
+#else
+#define STRB
+#endif
+#define STRC(v) printf("==new %p from %p sz %jd\n", v, __builtin_return_address(0), n)STRB
 #define STRD(v) printf("==del %p from %p\n", v, __builtin_return_address(0))
 void *operator new(size_t n) { void *vp = malloc(n); STRC(vp); bzero(vp,n); return vp; }
 void operator delete(void *t) { STRD(t); free(t); }
@@ -308,7 +327,7 @@ int main(int argc, char *argv[])
                        break; }
 
                case DO_BATCHRENDER: {
-                       BatchRenderThread *thread = new BatchRenderThread;
+                       BatchRenderThread *thread = new BatchRenderThread(0);
                        thread->start_rendering(config_path,
                                batch_path);
                        break; }
@@ -386,6 +405,14 @@ DISABLE_BUFFER
        time_t et; time(&et);
        long dt = et - st;
        printf("Session time: %ld:%02ld:%02ld\n", dt/3600, dt%3600/60, dt%60);
+       struct rusage ru;
+       getrusage(RUSAGE_SELF, &ru);
+       long usr_ms = ru.ru_utime.tv_sec*1000 + ru.ru_utime.tv_usec/1000;
+       long us = usr_ms/1000;  int ums = usr_ms%1000;
+       long sys_ms = ru.ru_stime.tv_sec*1000 + ru.ru_stime.tv_usec/1000;
+       long ss = sys_ms/1000;  int sms = sys_ms%1000;
+       printf("Cpu time: user: %ld:%02ld:%02ld.%03d sys: %ld:%02ld:%02ld.%03d\n",
+               us/3600, us%3600/60, us%60, ums, ss/3600, ss%3600/60, ss%60, sms);
        return 0;
 }