X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Finterpolate%2Finterpolate.C;h=9294d8fd6b4217047e68a2a648769966b2288991;hb=a19a685a46ddc630010788707d9e5b9d2342af46;hp=4c130eca4893f0966318a5d75952d4a778b168be;hpb=21c2e6b36d6a96c2f662a89459d607b5a387f4eb;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/interpolate/interpolate.C b/cinelerra-5.1/plugins/interpolate/interpolate.C index 4c130eca..9294d8fd 100644 --- a/cinelerra-5.1/plugins/interpolate/interpolate.C +++ b/cinelerra-5.1/plugins/interpolate/interpolate.C @@ -167,7 +167,7 @@ InterpolatePixelsMain::~InterpolatePixelsMain() delete engine; } -const char* InterpolatePixelsMain::plugin_title() { return _("Interpolate Pixels"); } +const char* InterpolatePixelsMain::plugin_title() { return N_("Interpolate Bayer"); } int InterpolatePixelsMain::is_realtime() { return 1; } @@ -198,7 +198,7 @@ void InterpolatePixelsMain::save_data(KeyFrame *keyframe) FileXML output; // cause data to be stored directly in text - output.set_shared_output(keyframe->get_data(), MESSAGESIZE); + output.set_shared_output(keyframe->xbuf); output.tag.set_title("INTERPOLATEPIXELS"); output.tag.set_property("X", config.x); output.tag.set_property("Y", config.y); @@ -213,7 +213,7 @@ void InterpolatePixelsMain::read_data(KeyFrame *keyframe) { FileXML input; - input.set_shared_input(keyframe->get_data(), strlen(keyframe->get_data())); + input.set_shared_input(keyframe->xbuf); int result = 0; @@ -278,7 +278,7 @@ int InterpolatePixelsMain::process_buffer(VFrame *frame, delete out_temp; out_temp = 0; } if( !out_temp ) - out_temp = new VFrame(0, -1, w, h, active_model, -1); + out_temp = new VFrame(w, h, active_model, 0); out_frame = out_temp; } @@ -327,19 +327,19 @@ int InterpolatePixelsMain::handle_opengl() get_output()->to_texture(); get_output()->enable_opengl(); - const char *shader_stack[] = { 0, 0, 0 }; - int current_shader = 0; - INTERPOLATE_COMPILE(shader_stack, current_shader) - unsigned int frag = VFrame::make_shader(0, - shader_stack[0], - 0); - if(frag > 0) - { - glUseProgram(frag); - glUniform1i(glGetUniformLocation(frag, "tex"), 0); - INTERPOLATE_UNIFORMS(frag) - } + const char *shader_stack[16]; + memset(shader_stack,0, sizeof(shader_stack)); + int current_shader = 0; + + INTERPOLATE_COMPILE(shader_stack, current_shader); + shader_stack[current_shader] = 0; + unsigned int shader = VFrame::make_shader(shader_stack); + if( shader > 0 ) { + glUseProgram(shader); + glUniform1i(glGetUniformLocation(shader, "tex"), 0); + INTERPOLATE_UNIFORMS(shader); + } get_output()->init_screen(); get_output()->bind_texture(0); @@ -400,6 +400,13 @@ void InterpolatePixelsUnit::process_package(LoadPackage *package) float color_matrix[9]; memcpy(color_matrix, server->color_matrix, sizeof(color_matrix)); +// printf("InterpolatePixelsUnit::process_package %d color_matrix=", __LINE__); +// for(int i = 0; i < 9; i++) +// { +// printf("%f ", color_matrix[i]); +// } +// printf("\n"); + y1 = MAX(y1, 1); y2 = MIN(y2, h - 1); @@ -451,9 +458,14 @@ void InterpolatePixelsUnit::process_package(LoadPackage *package) b = current_row[BLUE]; } - out_row[0] = r * color_matrix[0] + g * color_matrix[1] + b * color_matrix[2]; - out_row[1] = r * color_matrix[3] + g * color_matrix[4] + b * color_matrix[5]; - out_row[2] = r * color_matrix[6] + g * color_matrix[7] + b * color_matrix[8]; +// out_row[0] = r * color_matrix[0] + g * color_matrix[1] + b * color_matrix[2]; +// out_row[1] = r * color_matrix[3] + g * color_matrix[4] + b * color_matrix[5]; +// out_row[2] = r * color_matrix[6] + g * color_matrix[7] + b * color_matrix[8]; + + out_row[0] = r; + out_row[1] = g; + out_row[2] = b; + prev_row += components; current_row += components; next_row += components; @@ -486,9 +498,14 @@ void InterpolatePixelsUnit::process_package(LoadPackage *package) b = (prev_row[BLUE] + next_row[BLUE]) / 2; } - out_row[0] = r * color_matrix[0] + g * color_matrix[1] + b * color_matrix[2]; - out_row[1] = r * color_matrix[3] + g * color_matrix[4] + b * color_matrix[5]; - out_row[2] = r * color_matrix[6] + g * color_matrix[7] + b * color_matrix[8]; +// out_row[0] = r * color_matrix[0] + g * color_matrix[1] + b * color_matrix[2]; +// out_row[1] = r * color_matrix[3] + g * color_matrix[4] + b * color_matrix[5]; +// out_row[2] = r * color_matrix[6] + g * color_matrix[7] + b * color_matrix[8]; + + out_row[0] = r; + out_row[1] = g; + out_row[2] = b; + prev_row += components; current_row += components; next_row += components; @@ -514,6 +531,10 @@ void InterpolatePixelsEngine::init_packages() char string[BCTEXTLEN]; string[0] = 0; plugin->get_output()->get_params()->get("DCRAW_MATRIX", string); + +// printf("InterpolatePixelsEngine::init_packages %d\n", __LINE__); +// plugin->get_output()->dump_params(); + sscanf(string, "%f %f %f %f %f %f %f %f %f", &color_matrix[0],