X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Frgb601%2Fivtc.C.2;h=5fb34f7e7799cb523cd507f529065c6e417784db;hb=2162ee52e4d53d53ad5ce40af82784d8c8da0bad;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..5fb34f7e 100644 --- a/cinelerra-5.1/plugins/rgb601/ivtc.C.2 +++ b/cinelerra-5.1/plugins/rgb601/ivtc.C.2 @@ -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); }