Libmv: Inverse meaning of Marker::visible_channels
authorSergey Sharybin <sergey.vfx@gmail.com>
Thu, 30 Oct 2014 17:25:56 +0000 (22:25 +0500)
committerSergey Sharybin <sergey.vfx@gmail.com>
Thu, 30 Oct 2014 17:25:56 +0000 (22:25 +0500)
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.

extern/libmv/intern/tracksN.cc
extern/libmv/intern/tracksN.h
extern/libmv/libmv/autotrack/autotrack.cc
extern/libmv/libmv/autotrack/marker.h
source/blender/blenkernel/intern/tracking_auto.c

index a573478cbc5640ed232f7fec90d24b67dda178d2..9e1da88ef10a29ffcf759c5408afb2cdd5fd594c 100644 (file)
@@ -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) {
index 12549bd76e76bef4c11d6e3fbfa0043d3d727cfb..1366ea2f613522389be20cac482ee811a43a4fbb 100644 (file)
@@ -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
index 4a02031bfe6f8b6e660cbf9cfefad943a193dc09..b5d0ad45a8e9d5bc39033c5866f7dbff735ec5a2 100644 (file)
@@ -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,
index 394ec97f81542dc206d2dc1abd386611f203870e..8a6713c873a7484efd6faf6837a6eb25ea9975e3 100644 (file)
@@ -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>
index f344e60a7a5d5813c6aa0ea3b1c3b1b56523eaf6..11753d7d14cd1330c38f7d3fa07e90a3ec0f2f44 100644 (file)
@@ -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,