Merge CV, ver=5.1; ops/methods from HV, and interface from CV where possible
[goodguy/history.git] / cinelerra-5.1 / guicast / test2.C
diff --git a/cinelerra-5.1/guicast/test2.C b/cinelerra-5.1/guicast/test2.C
new file mode 100644 (file)
index 0000000..a8d9a3d
--- /dev/null
@@ -0,0 +1,97 @@
+
+/*
+ * CINELERRA
+ * Copyright (C) 2008 Adam Williams <broadcast at earthling dot net>
+ * 
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program 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 General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ * 
+ */
+
+#include "guicast.h"
+#include "vframe.h"
+#include <sys/time.h>
+
+class TestWindow : public BC_Window
+{
+public:
+       TestWindow() : BC_Window("test", 
+                               0,
+                               0,
+                               640, 
+                               480)
+       {
+       }
+};
+
+
+
+
+typedef struct
+{
+       struct timeval start_time;
+       struct timeval last_time;
+       int64_t frames;
+} status_t;
+
+
+
+static void init_status(status_t *status)
+{
+       gettimeofday(&status->start_time, 0);
+       gettimeofday(&status->last_time, 0);
+       status->frames = 0;
+}
+
+static void update_status(status_t *status)
+{
+       struct timeval new_time;
+       gettimeofday(&new_time, 0);
+       if(new_time.tv_sec - status->last_time.tv_sec > 1)
+       {
+               fprintf(stderr, "%lld frames.  %lld frames/sec      \r", 
+                       status->frames,
+                       (int64_t)status->frames / 
+                       (int64_t)(new_time.tv_sec - status->start_time.tv_sec));
+               fflush(stdout);
+               status->last_time = new_time;
+       };
+}
+
+static void stop_status()
+{
+       fprintf(stderr, "\n\n");
+}
+
+
+
+int main(int argc, char *argv[])
+{
+       TestWindow window;
+       status_t status;
+       
+//     int result = window.accel_available(BC_YUV422);
+//     printf("accel_available == %d\n", result);
+       window.start_video();
+       BC_Bitmap *bitmap1 = window.new_bitmap(640, 480, BC_BGR8888);
+       
+       init_status(&status);
+       while(1)
+       {
+               window.draw_bitmap(bitmap1, 1);
+               window.flash();
+               update_status(&status);
+               status.frames++;
+       }
+};