add fileppm, fix renderfarm/brender deadlock, fix audio meters, add gbrp + cin_pix_fm...
[goodguy/history.git] / cinelerra-5.1 / plugins / scaleratio / scaleratio.C
index 52073c10c7ebdf19e987d1ee42d6818596f359b5..e1ea68ccfa9a82232517cc0c032ebb3035c55489 100644 (file)
@@ -93,7 +93,7 @@ ScaleRatioMain::~ScaleRatioMain()
        overlayer = 0;
 }
 
-const char* ScaleRatioMain::plugin_title() { return _("Scale Ratio"); }
+const char* ScaleRatioMain::plugin_title() { return N_("Scale Ratio"); }
 int ScaleRatioMain::is_realtime() { return 1; }
 
 
@@ -171,6 +171,8 @@ int ScaleRatioMain::process_realtime(VFrame *input_ptr, VFrame *output_ptr)
 
        load_configuration();
 
+       if(get_use_opengl()) return run_opengl();
+
 //printf("ScaleRatioMain::process_realtime 1 %p\n", input);
        if( input->get_rows()[0] == output->get_rows()[0] ) {
                if( temp_frame && (
@@ -230,3 +232,28 @@ void ScaleRatioMain::update_gui()
 }
 
 
+int ScaleRatioMain::handle_opengl()
+{
+#ifdef HAVE_GL
+       VFrame *input = get_input(), *output = get_output();
+       float ix1 = (input->get_w() - config.src_w)/2 + config.src_x;
+       float iy1 = (input->get_h() - config.src_h)/2 + config.src_y;
+       float ix2 = ix1 + config.src_w;
+       float iy2 = iy1 + config.src_h;
+       float ox1 = (output->get_w() - config.dst_w)/2 + config.dst_x;
+       float oy1 = (output->get_h() - config.dst_h)/2 + config.dst_y;
+       float ox2 = ox1 + config.dst_w;
+       float oy2 = oy1 + config.dst_h;
+
+       output->to_texture();
+       output->enable_opengl();
+       output->init_screen();
+       output->clear_pbuffer();
+       output->bind_texture(0);
+       output->draw_texture(ix1,iy1, ix2,iy2, ox1,oy1, ox2,oy2);
+       output->set_opengl_state(VFrame::SCREEN);
+#endif
+       return 0;
+}
+
+