diff options
Diffstat (limited to 'intern/libmv/intern')
-rw-r--r-- | intern/libmv/intern/camera_intrinsics.cc | 4 | ||||
-rw-r--r-- | intern/libmv/intern/frame_accessor.cc | 61 | ||||
-rw-r--r-- | intern/libmv/intern/frame_accessor.h | 15 | ||||
-rw-r--r-- | intern/libmv/intern/logging.cc | 26 | ||||
-rw-r--r-- | intern/libmv/intern/stub.cc | 4 |
5 files changed, 90 insertions, 20 deletions
diff --git a/intern/libmv/intern/camera_intrinsics.cc b/intern/libmv/intern/camera_intrinsics.cc index 24a34ae40bb..3b4cd1545df 100644 --- a/intern/libmv/intern/camera_intrinsics.cc +++ b/intern/libmv/intern/camera_intrinsics.cc @@ -179,7 +179,7 @@ void libmv_cameraIntrinsicsExtractOptions( camera_intrinsics_options->polynomial_k2 = polynomial_intrinsics->k2(); camera_intrinsics_options->polynomial_k3 = polynomial_intrinsics->k3(); camera_intrinsics_options->polynomial_p1 = polynomial_intrinsics->p1(); - camera_intrinsics_options->polynomial_p1 = polynomial_intrinsics->p2(); + camera_intrinsics_options->polynomial_p2 = polynomial_intrinsics->p2(); break; } @@ -195,7 +195,7 @@ void libmv_cameraIntrinsicsExtractOptions( } default: - assert(!"Uknown distortion model"); + assert(!"Unknown distortion model"); } } diff --git a/intern/libmv/intern/frame_accessor.cc b/intern/libmv/intern/frame_accessor.cc index 9213cc311b3..a741eb88fc7 100644 --- a/intern/libmv/intern/frame_accessor.cc +++ b/intern/libmv/intern/frame_accessor.cc @@ -40,10 +40,17 @@ using mv::Region; struct LibmvFrameAccessor : public FrameAccessor { LibmvFrameAccessor(libmv_FrameAccessorUserData* user_data, libmv_GetImageCallback get_image_callback, - libmv_ReleaseImageCallback release_image_callback) + libmv_ReleaseImageCallback release_image_callback, + libmv_GetMaskForTrackCallback get_mask_for_track_callback, + libmv_ReleaseMaskCallback release_mask_callback) : user_data_(user_data), get_image_callback_(get_image_callback), - release_image_callback_(release_image_callback) { } + release_image_callback_(release_image_callback), + get_mask_for_track_callback_(get_mask_for_track_callback), + release_mask_callback_(release_mask_callback) { } + + virtual ~LibmvFrameAccessor() { + } libmv_InputMode get_libmv_input_mode(InputMode input_mode) { switch (input_mode) { @@ -106,6 +113,46 @@ struct LibmvFrameAccessor : public FrameAccessor { release_image_callback_(cache_key); } + Key GetMaskForTrack(int clip, + int frame, + int track, + const Region* region, + FloatImage* destination) { + float *float_buffer; + int width, height; + libmv_Region libmv_region; + if (region) { + get_libmv_region(*region, &libmv_region); + } + Key cache_key = get_mask_for_track_callback_( + user_data_, + clip, + frame, + track, + region != NULL ? &libmv_region : NULL, + &float_buffer, + &width, + &height); + + if (cache_key == NULL) { + // No mask for the given track. + return NULL; + } + + // TODO(sergey): Dumb code for until we can set data directly. + FloatImage temp_image(float_buffer, + height, + width, + 1); + destination->CopyFrom(temp_image); + + return cache_key; + } + + void ReleaseMask(Key key) { + release_mask_callback_(key); + } + bool GetClipDimensions(int /*clip*/, int * /*width*/, int * /*height*/) { return false; } @@ -121,6 +168,8 @@ struct LibmvFrameAccessor : public FrameAccessor { libmv_FrameAccessorUserData* user_data_; libmv_GetImageCallback get_image_callback_; libmv_ReleaseImageCallback release_image_callback_; + libmv_GetMaskForTrackCallback get_mask_for_track_callback_; + libmv_ReleaseMaskCallback release_mask_callback_; }; } // namespace @@ -128,11 +177,15 @@ struct LibmvFrameAccessor : public FrameAccessor { libmv_FrameAccessor* libmv_FrameAccessorNew( libmv_FrameAccessorUserData* user_data, libmv_GetImageCallback get_image_callback, - libmv_ReleaseImageCallback release_image_callback) { + libmv_ReleaseImageCallback release_image_callback, + libmv_GetMaskForTrackCallback get_mask_for_track_callback, + libmv_ReleaseMaskCallback release_mask_callback) { return (libmv_FrameAccessor*) LIBMV_OBJECT_NEW(LibmvFrameAccessor, user_data, get_image_callback, - release_image_callback); + release_image_callback, + get_mask_for_track_callback, + release_mask_callback); } void libmv_FrameAccessorDestroy(libmv_FrameAccessor* frame_accessor) { diff --git a/intern/libmv/intern/frame_accessor.h b/intern/libmv/intern/frame_accessor.h index 3e813fe7581..c041d67f56f 100644 --- a/intern/libmv/intern/frame_accessor.h +++ b/intern/libmv/intern/frame_accessor.h @@ -61,10 +61,23 @@ typedef libmv_CacheKey (*libmv_GetImageCallback) ( typedef void (*libmv_ReleaseImageCallback) (libmv_CacheKey cache_key); +typedef libmv_CacheKey (*libmv_GetMaskForTrackCallback) ( + libmv_FrameAccessorUserData* user_data, + int clip, + int frame, + int track, + const libmv_Region* region, + float** destination, + int* width, + int* height); +typedef void (*libmv_ReleaseMaskCallback) (libmv_CacheKey cache_key); + libmv_FrameAccessor* libmv_FrameAccessorNew( libmv_FrameAccessorUserData* user_data, libmv_GetImageCallback get_image_callback, - libmv_ReleaseImageCallback release_image_callback); + libmv_ReleaseImageCallback release_image_callback, + libmv_GetMaskForTrackCallback get_mask_for_track_callback, + libmv_ReleaseMaskCallback release_mask_callback); void libmv_FrameAccessorDestroy(libmv_FrameAccessor* frame_accessor); int64_t libmv_frameAccessorgetTransformKey(const libmv_FrameTransform *transform); diff --git a/intern/libmv/intern/logging.cc b/intern/libmv/intern/logging.cc index 77b56ef4df3..863832cb72b 100644 --- a/intern/libmv/intern/logging.cc +++ b/intern/libmv/intern/logging.cc @@ -29,27 +29,29 @@ #include "libmv/logging/logging.h" void libmv_initLogging(const char* argv0) { - // Make it so FATAL messages are always print into console. + using LIBMV_GFLAGS_NAMESPACE::SetCommandLineOption; + // Make it so ERROR messages are always print into console. char severity_fatal[32]; snprintf(severity_fatal, sizeof(severity_fatal), "%d", - google::GLOG_FATAL); - + google::GLOG_ERROR); google::InitGoogleLogging(argv0); - gflags::SetCommandLineOption("logtostderr", "1"); - gflags::SetCommandLineOption("v", "0"); - gflags::SetCommandLineOption("stderrthreshold", severity_fatal); - gflags::SetCommandLineOption("minloglevel", severity_fatal); + SetCommandLineOption("logtostderr", "1"); + SetCommandLineOption("v", "0"); + SetCommandLineOption("stderrthreshold", severity_fatal); + SetCommandLineOption("minloglevel", severity_fatal); } void libmv_startDebugLogging(void) { - gflags::SetCommandLineOption("logtostderr", "1"); - gflags::SetCommandLineOption("v", "2"); - gflags::SetCommandLineOption("stderrthreshold", "1"); - gflags::SetCommandLineOption("minloglevel", "0"); + using LIBMV_GFLAGS_NAMESPACE::SetCommandLineOption; + SetCommandLineOption("logtostderr", "1"); + SetCommandLineOption("v", "2"); + SetCommandLineOption("stderrthreshold", "1"); + SetCommandLineOption("minloglevel", "0"); } void libmv_setLoggingVerbosity(int verbosity) { + using LIBMV_GFLAGS_NAMESPACE::SetCommandLineOption; char val[10]; snprintf(val, sizeof(val), "%d", verbosity); - gflags::SetCommandLineOption("v", val); + SetCommandLineOption("v", val); } diff --git a/intern/libmv/intern/stub.cc b/intern/libmv/intern/stub.cc index 47e1915e072..8603cc03153 100644 --- a/intern/libmv/intern/stub.cc +++ b/intern/libmv/intern/stub.cc @@ -375,7 +375,9 @@ int libmv_autoTrackGetMarker(libmv_AutoTrack* /*libmv_autotrack*/, libmv_FrameAccessor* libmv_FrameAccessorNew( libmv_FrameAccessorUserData* /*user_data**/, libmv_GetImageCallback /*get_image_callback*/, - libmv_ReleaseImageCallback /*release_image_callback*/) + libmv_ReleaseImageCallback /*release_image_callback*/, + libmv_GetMaskForTrackCallback /*get_mask_for_track_callback*/, + libmv_ReleaseMaskCallback /*release_mask_callback*/) { return NULL; } |