Commit: 0ea04447c54730d6ac4e6b425b2a19c2e403b346 Author: Sergey Sharybin Date: Thu Oct 30 22:25:56 2014 +0500 Branches: libmv_prediction https://developer.blender.org/rB0ea04447c54730d6ac4e6b425b2a19c2e403b346
Libmv: Inverse meaning of Marker::visible_channels This way it's not needed to initialize channels bits if all of them re expected to be used, plus simplifies checks in some cases as well. =================================================================== M extern/libmv/intern/tracksN.cc M extern/libmv/intern/tracksN.h M extern/libmv/libmv/autotrack/autotrack.cc M extern/libmv/libmv/autotrack/marker.h M source/blender/blenkernel/intern/tracking_auto.c =================================================================== diff --git a/extern/libmv/intern/tracksN.cc b/extern/libmv/intern/tracksN.cc index a573478..9e1da88 100644 --- a/extern/libmv/intern/tracksN.cc +++ b/extern/libmv/intern/tracksN.cc @@ -54,7 +54,7 @@ void libmv_apiMarkerToMarker(const libmv_Marker& libmv_marker, marker->reference_frame = libmv_marker.reference_frame; marker->model_type = (Marker::ModelType) libmv_marker.model_type; marker->model_id = libmv_marker.model_id; - marker->visible_channels = libmv_marker.visible_channels; + marker->disabled_channels = libmv_marker.disabled_channels; } void libmv_markerToApiMarker(const Marker& marker, @@ -79,7 +79,7 @@ void libmv_markerToApiMarker(const Marker& marker, libmv_marker->reference_frame = marker.reference_frame; libmv_marker->model_type = (libmv_MarkerModelType) marker.model_type; libmv_marker->model_id = marker.model_id; - libmv_marker->visible_channels = marker.visible_channels; + libmv_marker->disabled_channels = marker.disabled_channels; } libmv_TracksN* libmv_tracksNewN(void) { diff --git a/extern/libmv/intern/tracksN.h b/extern/libmv/intern/tracksN.h index 12549bd..1366ea2 100644 --- a/extern/libmv/intern/tracksN.h +++ b/extern/libmv/intern/tracksN.h @@ -81,7 +81,7 @@ typedef struct libmv_Marker { int reference_frame; libmv_MarkerModelType model_type; int model_id; - int visible_channels; + int disabled_channels; } libmv_Marker; #ifdef __cplusplus diff --git a/extern/libmv/libmv/autotrack/autotrack.cc b/extern/libmv/libmv/autotrack/autotrack.cc index 4a02031..b5d0ad4 100644 --- a/extern/libmv/libmv/autotrack/autotrack.cc +++ b/extern/libmv/libmv/autotrack/autotrack.cc @@ -34,18 +34,17 @@ namespace { class DisableChannelsTransform : public FrameAccessor::Transform { public: - DisableChannelsTransform(int visible_channels) - : visible_channels_(visible_channels) { } + DisableChannelsTransform(int disabled_channels) + : disabled_channels_(disabled_channels) { } int64_t key() const { - // We invert bits here so key is never null. - return !visible_channels_; + return disabled_channels_; } void run(const FloatImage& input, FloatImage* output) const { - bool disable_red = (visible_channels_ & Marker::CHANNEL_R) == 0, - disable_green = (visible_channels_ & Marker::CHANNEL_G) == 0, - disable_blue = (visible_channels_ & Marker::CHANNEL_B) == 0; + bool disable_red = (disabled_channels_ & Marker::CHANNEL_R) != 0, + disable_green = (disabled_channels_ & Marker::CHANNEL_G) != 0, + disable_blue = (disabled_channels_ & Marker::CHANNEL_B) != 0; LG << "Disabling channels: " << (disable_red ? "R " : "") @@ -71,7 +70,7 @@ class DisableChannelsTransform : public FrameAccessor::Transform { private: // Bitfield representing visible channels, bits are from Marker::Channel. - int visible_channels_; + int disabled_channels_; }; template<typename QuadT, typename ArrayT> @@ -100,10 +99,8 @@ FrameAccessor::Key GetImageForMarker(const Marker& marker, // Ideally we would need to pass IntRegion to the frame accessor. Region region = marker.search_region.Rounded(); libmv::scoped_ptr<FrameAccessor::Transform> transform = NULL; - if (marker.visible_channels != (Marker::CHANNEL_R | - Marker::CHANNEL_G | - Marker::CHANNEL_B)) { - transform.reset(new DisableChannelsTransform(marker.visible_channels)); + if (marker.disabled_channels != 0) { + transform.reset(new DisableChannelsTransform(marker.disabled_channels)); } return frame_accessor->GetImage(marker.clip, marker.frame, diff --git a/extern/libmv/libmv/autotrack/marker.h b/extern/libmv/libmv/autotrack/marker.h index 394ec97..8a6713c 100644 --- a/extern/libmv/libmv/autotrack/marker.h +++ b/extern/libmv/libmv/autotrack/marker.h @@ -104,14 +104,13 @@ struct Marker { // TODO(keir): Add a "int model_argument" to capture that e.g. a marker is on // the 3rd face of a cube. - // Channels from the original frame which this marker is able to see. + // Channels from the original frame which this marker is unable to see. enum Channel { CHANNEL_R = (1 << 0), CHANNEL_G = (1 << 1), CHANNEL_B = (1 << 2), }; - - int visible_channels; + int disabled_channels; // Offset everything (center, patch, search) by the given delta. template<typename T> diff --git a/source/blender/blenkernel/intern/tracking_auto.c b/source/blender/blenkernel/intern/tracking_auto.c index f344e60..11753d7 100644 --- a/source/blender/blenkernel/intern/tracking_auto.c +++ b/source/blender/blenkernel/intern/tracking_auto.c @@ -184,10 +184,10 @@ static void dna_marker_to_libmv_marker(/*const*/ MovieTrackingTrack *track, marker->framenr; } - libmv_marker->visible_channels = - ((track->flag & TRACK_DISABLE_RED) ? 0 : LIBMV_MARKER_CHANNEL_R) | - ((track->flag & TRACK_DISABLE_GREEN) ? 0 : LIBMV_MARKER_CHANNEL_G) | - ((track->flag & TRACK_DISABLE_BLUE) ? 0 : LIBMV_MARKER_CHANNEL_B); + libmv_marker->disabled_channels = + ((track->flag & TRACK_DISABLE_RED) ? LIBMV_MARKER_CHANNEL_R : 0) | + ((track->flag & TRACK_DISABLE_GREEN) ? LIBMV_MARKER_CHANNEL_G : 0) | + ((track->flag & TRACK_DISABLE_BLUE) ? LIBMV_MARKER_CHANNEL_B : 0); } static void libmv_marker_to_dna_marker(libmv_Marker *libmv_marker, _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs