X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Fscaleratio%2Fscaleratio.C;h=e1ea68ccfa9a82232517cc0c032ebb3035c55489;hb=502b6f3b6fd04f6b01c6d70dcb81aa304dd0db1c;hp=52073c10c7ebdf19e987d1ee42d6818596f359b5;hpb=48c313de28fe6d39d9431dbe2dca6ffb176541ff;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/scaleratio/scaleratio.C b/cinelerra-5.1/plugins/scaleratio/scaleratio.C index 52073c10..e1ea68cc 100644 --- a/cinelerra-5.1/plugins/scaleratio/scaleratio.C +++ b/cinelerra-5.1/plugins/scaleratio/scaleratio.C @@ -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; +} + +