diff options
Diffstat (limited to 'source/blender/compositor/operations/COM_MovieDistortionOperation.cc')
-rw-r--r-- | source/blender/compositor/operations/COM_MovieDistortionOperation.cc | 95 |
1 files changed, 47 insertions, 48 deletions
diff --git a/source/blender/compositor/operations/COM_MovieDistortionOperation.cc b/source/blender/compositor/operations/COM_MovieDistortionOperation.cc index ec17c2d030f..0cb0742dbee 100644 --- a/source/blender/compositor/operations/COM_MovieDistortionOperation.cc +++ b/source/blender/compositor/operations/COM_MovieDistortionOperation.cc @@ -27,20 +27,20 @@ MovieDistortionOperation::MovieDistortionOperation(bool distortion) this->addInputSocket(DataType::Color); this->addOutputSocket(DataType::Color); this->set_canvas_input_index(0); - m_inputOperation = nullptr; - m_movieClip = nullptr; - m_apply = distortion; + inputOperation_ = nullptr; + movieClip_ = nullptr; + apply_ = distortion; } void MovieDistortionOperation::init_data() { - if (m_movieClip) { - MovieTracking *tracking = &m_movieClip->tracking; + if (movieClip_) { + MovieTracking *tracking = &movieClip_->tracking; MovieClipUser clipUser = {0}; int calibration_width, calibration_height; - BKE_movieclip_user_set_frame(&clipUser, m_framenumber); - BKE_movieclip_get_size(m_movieClip, &clipUser, &calibration_width, &calibration_height); + BKE_movieclip_user_set_frame(&clipUser, framenumber_); + BKE_movieclip_get_size(movieClip_, &clipUser, &calibration_width, &calibration_height); float delta[2]; rcti full_frame; @@ -48,42 +48,41 @@ void MovieDistortionOperation::init_data() full_frame.xmax = this->getWidth(); full_frame.ymax = this->getHeight(); BKE_tracking_max_distortion_delta_across_bound( - tracking, this->getWidth(), this->getHeight(), &full_frame, !m_apply, delta); + tracking, this->getWidth(), this->getHeight(), &full_frame, !apply_, delta); /* 5 is just in case we didn't hit real max of distortion in * BKE_tracking_max_undistortion_delta_across_bound */ - m_margin[0] = delta[0] + 5; - m_margin[1] = delta[1] + 5; + margin_[0] = delta[0] + 5; + margin_[1] = delta[1] + 5; - m_calibration_width = calibration_width; - m_calibration_height = calibration_height; - m_pixel_aspect = tracking->camera.pixel_aspect; + calibration_width_ = calibration_width; + calibration_height_ = calibration_height; + pixel_aspect_ = tracking->camera.pixel_aspect; } else { - m_margin[0] = m_margin[1] = 0; + margin_[0] = margin_[1] = 0; } } void MovieDistortionOperation::initExecution() { - m_inputOperation = this->getInputSocketReader(0); - if (m_movieClip) { - MovieTracking *tracking = &m_movieClip->tracking; - m_distortion = BKE_tracking_distortion_new( - tracking, m_calibration_width, m_calibration_height); + inputOperation_ = this->getInputSocketReader(0); + if (movieClip_) { + MovieTracking *tracking = &movieClip_->tracking; + distortion_ = BKE_tracking_distortion_new(tracking, calibration_width_, calibration_height_); } else { - m_distortion = nullptr; + distortion_ = nullptr; } } void MovieDistortionOperation::deinitExecution() { - m_inputOperation = nullptr; - m_movieClip = nullptr; - if (m_distortion != nullptr) { - BKE_tracking_distortion_free(m_distortion); + inputOperation_ = nullptr; + movieClip_ = nullptr; + if (distortion_ != nullptr) { + BKE_tracking_distortion_free(distortion_); } } @@ -92,33 +91,33 @@ void MovieDistortionOperation::executePixelSampled(float output[4], float y, PixelSampler /*sampler*/) { - if (m_distortion != nullptr) { + if (distortion_ != nullptr) { /* float overscan = 0.0f; */ - const float pixel_aspect = m_pixel_aspect; + const float pixel_aspect = pixel_aspect_; const float w = (float)this->getWidth() /* / (1 + overscan) */; const float h = (float)this->getHeight() /* / (1 + overscan) */; - const float aspx = w / (float)m_calibration_width; - const float aspy = h / (float)m_calibration_height; + const float aspx = w / (float)calibration_width_; + const float aspy = h / (float)calibration_height_; float in[2]; float out[2]; in[0] = (x /* - 0.5 * overscan * w */) / aspx; in[1] = (y /* - 0.5 * overscan * h */) / aspy / pixel_aspect; - if (m_apply) { - BKE_tracking_distortion_undistort_v2(m_distortion, in, out); + if (apply_) { + BKE_tracking_distortion_undistort_v2(distortion_, in, out); } else { - BKE_tracking_distortion_distort_v2(m_distortion, in, out); + BKE_tracking_distortion_distort_v2(distortion_, in, out); } float u = out[0] * aspx /* + 0.5 * overscan * w */, v = (out[1] * aspy /* + 0.5 * overscan * h */) * pixel_aspect; - m_inputOperation->readSampled(output, u, v, PixelSampler::Bilinear); + inputOperation_->readSampled(output, u, v, PixelSampler::Bilinear); } else { - m_inputOperation->readSampled(output, x, y, PixelSampler::Bilinear); + inputOperation_->readSampled(output, x, y, PixelSampler::Bilinear); } } @@ -127,10 +126,10 @@ bool MovieDistortionOperation::determineDependingAreaOfInterest(rcti *input, rcti *output) { rcti newInput; - newInput.xmin = input->xmin - m_margin[0]; - newInput.ymin = input->ymin - m_margin[1]; - newInput.xmax = input->xmax + m_margin[0]; - newInput.ymax = input->ymax + m_margin[1]; + newInput.xmin = input->xmin - margin_[0]; + newInput.ymin = input->ymin - margin_[1]; + newInput.xmax = input->xmax + margin_[0]; + newInput.ymax = input->ymax + margin_[1]; return NodeOperation::determineDependingAreaOfInterest(&newInput, readOperation, output); } @@ -140,10 +139,10 @@ void MovieDistortionOperation::get_area_of_interest(const int input_idx, { BLI_assert(input_idx == 0); UNUSED_VARS_NDEBUG(input_idx); - r_input_area.xmin = output_area.xmin - m_margin[0]; - r_input_area.ymin = output_area.ymin - m_margin[1]; - r_input_area.xmax = output_area.xmax + m_margin[0]; - r_input_area.ymax = output_area.ymax + m_margin[1]; + r_input_area.xmin = output_area.xmin - margin_[0]; + r_input_area.ymin = output_area.ymin - margin_[1]; + r_input_area.xmax = output_area.xmax + margin_[0]; + r_input_area.ymax = output_area.ymax + margin_[1]; } void MovieDistortionOperation::update_memory_buffer_partial(MemoryBuffer *output, @@ -151,28 +150,28 @@ void MovieDistortionOperation::update_memory_buffer_partial(MemoryBuffer *output Span<MemoryBuffer *> inputs) { const MemoryBuffer *input_img = inputs[0]; - if (m_distortion == nullptr) { + if (distortion_ == nullptr) { output->copy_from(input_img, area); return; } /* `float overscan = 0.0f;` */ - const float pixel_aspect = m_pixel_aspect; + const float pixel_aspect = pixel_aspect_; const float w = (float)this->getWidth() /* `/ (1 + overscan)` */; const float h = (float)this->getHeight() /* `/ (1 + overscan)` */; - const float aspx = w / (float)m_calibration_width; - const float aspy = h / (float)m_calibration_height; + const float aspx = w / (float)calibration_width_; + const float aspy = h / (float)calibration_height_; float xy[2]; float distorted_xy[2]; for (BuffersIterator<float> it = output->iterate_with({}, area); !it.is_end(); ++it) { xy[0] = (it.x /* `- 0.5 * overscan * w` */) / aspx; xy[1] = (it.y /* `- 0.5 * overscan * h` */) / aspy / pixel_aspect; - if (m_apply) { - BKE_tracking_distortion_undistort_v2(m_distortion, xy, distorted_xy); + if (apply_) { + BKE_tracking_distortion_undistort_v2(distortion_, xy, distorted_xy); } else { - BKE_tracking_distortion_distort_v2(m_distortion, xy, distorted_xy); + BKE_tracking_distortion_distort_v2(distortion_, xy, distorted_xy); } const float u = distorted_xy[0] * aspx /* `+ 0.5 * overscan * w` */; |