X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Frgb601%2Fivtc.C.2;h=0435464c962aebd04c536007ca089e16b03dd4e1;hb=HEAD;hp=d7e25e48c9ec8b330af2fb164086c6b3728f7786;hpb=0983c78067d86d25426fd34655ad9a9992ef04c7;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/rgb601/ivtc.C.2 b/cinelerra-5.1/plugins/rgb601/ivtc.C.2 index d7e25e48..0435464c 100644 --- a/cinelerra-5.1/plugins/rgb601/ivtc.C.2 +++ b/cinelerra-5.1/plugins/rgb601/ivtc.C.2 @@ -42,7 +42,7 @@ RGB601Main::~RGB601Main() delete defaults; } -char* RGB601Main::plugin_title() { return _("Inverse Telecine"); } +char* RGB601Main::plugin_title() { return "Inverse Telecine"; } int RGB601Main::is_realtime() { return 1; } int RGB601Main::load_defaults() @@ -131,7 +131,7 @@ void RGB601Main::read_data(KeyFrame *keyframe) // average = -1; // } - if(thread) + if(thread) { thread->window->frame_offset->update((long)config.frame_offset); thread->window->first_field->update(config.first_field); @@ -180,40 +180,40 @@ int64_t RGB601Main::compare_fields(VFrame *frame1, VFrame *frame2, int field) { case BC_RGB888: case BC_YUV888: - COMPARE_ROWS(result, - frame1->get_rows()[row], - frame2->get_rows()[row], - unsigned char, - frame1->get_w(), + COMPARE_ROWS(result, + frame1->get_rows()[row], + frame2->get_rows()[row], + unsigned char, + frame1->get_w(), 3); break; case BC_RGBA8888: case BC_YUVA8888: - COMPARE_ROWS(result, - frame1->get_rows()[row], - frame2->get_rows()[row], - unsigned char, + COMPARE_ROWS(result, + frame1->get_rows()[row], + frame2->get_rows()[row], + unsigned char, frame1->get_w(), 4); break; case BC_RGB161616: case BC_YUV161616: - COMPARE_ROWS(result, - frame1->get_rows()[row], - frame2->get_rows()[row], - u_int16_t, + COMPARE_ROWS(result, + frame1->get_rows()[row], + frame2->get_rows()[row], + u_int16_t, frame1->get_w(), 3); break; - + case BC_RGBA16161616: case BC_YUVA16161616: - COMPARE_ROWS(result, - frame1->get_rows()[row], - frame2->get_rows()[row], - u_int16_t, + COMPARE_ROWS(result, + frame1->get_rows()[row], + frame2->get_rows()[row], + u_int16_t, frame1->get_w(), 4); break; @@ -249,8 +249,8 @@ int RGB601Main::process_realtime(VFrame *input_ptr, VFrame *output_ptr) { int64_t field1 = compare_fields(temp_frame[0], input_ptr, 0); int64_t field2 = compare_fields(temp_frame[0], input_ptr, 1); - int64_t threshold = (int64_t)(config.auto_threshold * - input_ptr->get_w() * + int64_t threshold = (int64_t)(config.auto_threshold * + input_ptr->get_w() * input_ptr->get_h()); // if(input_ptr->get_color_model() == BC_RGBA8888 || @@ -283,7 +283,7 @@ int RGB601Main::process_realtime(VFrame *input_ptr, VFrame *output_ptr) for(int i = 0; i < input_ptr->get_h(); i++) { if((i + new_field) & 1) - memcpy(output_ptr->get_rows()[i], + memcpy(output_ptr->get_rows()[i], input_ptr->get_rows()[i], row_size); else @@ -301,8 +301,8 @@ int RGB601Main::process_realtime(VFrame *input_ptr, VFrame *output_ptr) state = 0; // Compute new threshold for next time - average = (int64_t)(average * total_average + - field1 + + average = (int64_t)(average * total_average + + field1 + field2) / (total_average + 2); if(input_ptr->get_rows()[0] != output_ptr->get_rows()[0]) @@ -316,13 +316,13 @@ int RGB601Main::process_realtime(VFrame *input_ptr, VFrame *output_ptr) new_field = 1; // Compute new threshold for next time - average = (int64_t)(average * total_average + + average = (int64_t)(average * total_average + field1) / (total_average + 1); for(int i = 0; i < input_ptr->get_h(); i++) { if(i & 1) - memcpy(output_ptr->get_rows()[i], + memcpy(output_ptr->get_rows()[i], temp_frame[0]->get_rows()[i], row_size); else @@ -339,7 +339,7 @@ int RGB601Main::process_realtime(VFrame *input_ptr, VFrame *output_ptr) new_field = 0; // Compute new threshold for next time - average = (int64_t)(average * total_average + + average = (int64_t)(average * total_average + field2) / (total_average + 1); for(int i = 0; i < input_ptr->get_h(); i++) @@ -349,7 +349,7 @@ int RGB601Main::process_realtime(VFrame *input_ptr, VFrame *output_ptr) input_ptr->get_rows()[i], row_size); else - memcpy(output_ptr->get_rows()[i], + memcpy(output_ptr->get_rows()[i], temp_frame[0]->get_rows()[i], row_size); } @@ -387,11 +387,11 @@ int RGB601Main::process_realtime(VFrame *input_ptr, VFrame *output_ptr) for(int i = 0; i < input_ptr->get_h(); i++) { if((i + config.first_field) & 1) - memcpy(output_ptr->get_rows()[i], + memcpy(output_ptr->get_rows()[i], input_ptr->get_rows()[i], row_size); else - memcpy(output_ptr->get_rows()[i], + memcpy(output_ptr->get_rows()[i], temp_frame[1]->get_rows()[i], row_size); }