diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2017-05-28 18:48:59 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2017-05-28 18:48:59 +0300 |
commit | 8ead56c4c974ea3f7481be61c74a0bbd5b8cde83 (patch) | |
tree | 80a55f0ac146c8379a14397649c6d57623f5cf50 /intern | |
parent | 6dfe56f01a2bac39e848316bcfa6882318768c3b (diff) | |
parent | b947810291b16d3f304e2cd59f94c96c5f6e6f51 (diff) |
Merge branch 'master' into blender2.8
Diffstat (limited to 'intern')
-rw-r--r-- | intern/dualcon/intern/Projections.h | 2 | ||||
-rw-r--r-- | intern/dualcon/intern/dualcon_c_api.cpp | 2 | ||||
-rw-r--r-- | intern/elbeem/intern/mvmcoords.h | 2 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_Context.cpp | 2 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_DisplayManagerWin32.cpp | 2 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_SystemPathsWin32.cpp | 24 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_SystemWin32.cpp | 12 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_SystemWin32.h | 8 | ||||
-rw-r--r-- | intern/ghost/intern/GHOST_TaskbarWin32.h | 8 | ||||
-rw-r--r-- | intern/guardedalloc/intern/mallocn_intern.h | 8 | ||||
-rw-r--r-- | intern/libmv/intern/frame_accessor.cc | 53 | ||||
-rw-r--r-- | intern/libmv/intern/frame_accessor.h | 15 | ||||
-rw-r--r-- | intern/libmv/intern/stub.cc | 4 | ||||
-rw-r--r-- | intern/libmv/intern/track_region.cc | 2 | ||||
-rw-r--r-- | intern/libmv/libmv/autotrack/autotrack.cc | 23 | ||||
-rw-r--r-- | intern/libmv/libmv/autotrack/frame_accessor.h | 19 | ||||
-rw-r--r-- | intern/opencolorio/CMakeLists.txt | 2 |
17 files changed, 121 insertions, 67 deletions
diff --git a/intern/dualcon/intern/Projections.h b/intern/dualcon/intern/Projections.h index 2d1eca55997..2d245a77d15 100644 --- a/intern/dualcon/intern/Projections.h +++ b/intern/dualcon/intern/Projections.h @@ -29,7 +29,7 @@ #define CONTAINS_INDEX #define GRID_DIMENSION 20 -#if defined(_WIN32) && !defined(__MINGW32__) && !(_MSC_VER >= 1900) +#if defined(_WIN32) && !(_MSC_VER >= 1900) #define isnan(n) _isnan(n) #define LONG __int64 #define int64_t __int64 diff --git a/intern/dualcon/intern/dualcon_c_api.cpp b/intern/dualcon/intern/dualcon_c_api.cpp index e55de2ed354..92f8b0cfd1a 100644 --- a/intern/dualcon/intern/dualcon_c_api.cpp +++ b/intern/dualcon/intern/dualcon_c_api.cpp @@ -28,7 +28,7 @@ #include <cstdio> #include <float.h> -#if defined(_WIN32) && !defined(__MINGW32__) +#if defined(_WIN32) #define isnan(n) _isnan(n) #endif diff --git a/intern/elbeem/intern/mvmcoords.h b/intern/elbeem/intern/mvmcoords.h index 56d991aac6e..deeedcf9dd4 100644 --- a/intern/elbeem/intern/mvmcoords.h +++ b/intern/elbeem/intern/mvmcoords.h @@ -23,12 +23,10 @@ #define mvmFloat double #ifdef WIN32 -#ifndef FREE_WINDOWS #include "float.h" #define isnan(n) _isnan(n) #define finite _finite #endif -#endif #ifdef sun #include "ieeefp.h" diff --git a/intern/ghost/intern/GHOST_Context.cpp b/intern/ghost/intern/GHOST_Context.cpp index fc7193ae99b..823a476d244 100644 --- a/intern/ghost/intern/GHOST_Context.cpp +++ b/intern/ghost/intern/GHOST_Context.cpp @@ -38,7 +38,7 @@ # include <tchar.h> # # ifndef ERROR_PROFILE_DOES_NOT_MATCH_DEVICE -# define ERROR_PROFILE_DOES_NOT_MATCH_DEVICE 0x7E7 // Mingw64 headers may have had this +# define ERROR_PROFILE_DOES_NOT_MATCH_DEVICE 0x7E7 # endif #endif diff --git a/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp b/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp index 252ea775329..7b9a897fe57 100644 --- a/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp +++ b/intern/ghost/intern/GHOST_DisplayManagerWin32.cpp @@ -41,9 +41,7 @@ // We do not support multiple monitors at the moment #define COMPILE_MULTIMON_STUBS -#ifndef FREE_WINDOWS #include <multimon.h> -#endif GHOST_DisplayManagerWin32::GHOST_DisplayManagerWin32(void) diff --git a/intern/ghost/intern/GHOST_SystemPathsWin32.cpp b/intern/ghost/intern/GHOST_SystemPathsWin32.cpp index 7d0ce5158fe..8056bc76edb 100644 --- a/intern/ghost/intern/GHOST_SystemPathsWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemPathsWin32.cpp @@ -37,30 +37,6 @@ #include <shlobj.h> #include "utfconv.h" -#ifdef __MINGW32__ - -#if !defined(SHARD_PIDL) -#define SHARD_PIDL 0x00000001L -#endif - -#if !defined(SHARD_PATHA) -#define SHARD_PATHA 0x00000002L -#endif - -#if !defined(SHARD_PATHW) -#define SHARD_PATHW 0x00000003L -#endif - -#if !defined(SHARD_PATH) -#ifdef UNICODE -#define SHARD_PATH SHARD_PATHW -#else -#define SHARD_PATH SHARD_PATHA -#endif -#endif - -#endif - GHOST_SystemPathsWin32::GHOST_SystemPathsWin32() { } diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp index 240d7ccd2fe..ca7118de7b0 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.cpp +++ b/intern/ghost/intern/GHOST_SystemWin32.cpp @@ -890,25 +890,15 @@ bool GHOST_SystemWin32::processNDOF(RAWINPUT const &raw) // send motion. Mark as 'sent' so motion will always get dispatched. eventSent = true; -#if defined(_MSC_VER) || defined(FREE_WINDOWS64) +#if defined(_MSC_VER) // using Microsoft compiler & header files // they invented the RawInput API, so this version is (probably) correct. - // MinGW64 also works fine with this BYTE const *data = raw.data.hid.bRawData; // struct RAWHID { // DWORD dwSizeHid; // DWORD dwCount; // BYTE bRawData[1]; // }; -#else - // MinGW's definition (below) doesn't agree, so we need a slight - // workaround until it's fixed - BYTE const *data = &raw.data.hid.bRawData; - // struct RAWHID { - // DWORD dwSizeHid; - // DWORD dwCount; - // BYTE bRawData; // <== isn't this s'posed to be a BYTE*? - // }; #endif BYTE packetType = data[0]; diff --git a/intern/ghost/intern/GHOST_SystemWin32.h b/intern/ghost/intern/GHOST_SystemWin32.h index d534a300b35..099d14e68ae 100644 --- a/intern/ghost/intern/GHOST_SystemWin32.h +++ b/intern/ghost/intern/GHOST_SystemWin32.h @@ -37,10 +37,10 @@ #error WIN32 only! #endif // WIN32 -#ifndef __MINGW64__ -# undef _WIN32_WINNT -# define _WIN32_WINNT 0x501 // require Windows XP or newer -#endif +/* require Windows XP or newer */ +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x501 + #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <ole2.h> // for drag-n-drop diff --git a/intern/ghost/intern/GHOST_TaskbarWin32.h b/intern/ghost/intern/GHOST_TaskbarWin32.h index 6fcff297237..0ef71754717 100644 --- a/intern/ghost/intern/GHOST_TaskbarWin32.h +++ b/intern/ghost/intern/GHOST_TaskbarWin32.h @@ -8,10 +8,10 @@ #error WIN32 only! #endif // WIN32 -#ifndef __MINGW64__ -# undef _WIN32_WINNT -# define _WIN32_WINNT 0x501 // require Windows XP or newer -#endif +/* require Windows XP or newer */ +#undef _WIN32_WINNT +#define _WIN32_WINNT 0x501 + #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <shlobj.h> diff --git a/intern/guardedalloc/intern/mallocn_intern.h b/intern/guardedalloc/intern/mallocn_intern.h index 3f7e462c1c7..a292a2eb5a0 100644 --- a/intern/guardedalloc/intern/mallocn_intern.h +++ b/intern/guardedalloc/intern/mallocn_intern.h @@ -89,14 +89,6 @@ #if !defined(__APPLE__) && !defined(__FreeBSD__) && !defined(__NetBSD__) // Needed for memalign on Linux and _aligned_alloc on Windows. -# ifdef FREE_WINDOWS -/* make sure _aligned_malloc is included */ -# ifdef __MSVCRT_VERSION__ -# undef __MSVCRT_VERSION__ -# endif - -# define __MSVCRT_VERSION__ 0x0700 -# endif // FREE_WINDOWS # include <malloc.h> #else diff --git a/intern/libmv/intern/frame_accessor.cc b/intern/libmv/intern/frame_accessor.cc index 5d274d7ccca..e7fc0ab4883 100644 --- a/intern/libmv/intern/frame_accessor.cc +++ b/intern/libmv/intern/frame_accessor.cc @@ -40,10 +40,14 @@ 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() { } @@ -109,6 +113,41 @@ 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); + + // 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; } @@ -124,6 +163,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 @@ -131,11 +172,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/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; } diff --git a/intern/libmv/intern/track_region.cc b/intern/libmv/intern/track_region.cc index 8989897e09f..d395b6457d7 100644 --- a/intern/libmv/intern/track_region.cc +++ b/intern/libmv/intern/track_region.cc @@ -36,7 +36,7 @@ /* define this to generate PNG images with content of search areas on every itteration of tracking */ -#undef DUMP_ALWAYS +#define DUMP_ALWAYS using libmv::FloatImage; using libmv::TrackRegionOptions; diff --git a/intern/libmv/libmv/autotrack/autotrack.cc b/intern/libmv/libmv/autotrack/autotrack.cc index 4c7bdf1fde8..00366e0f661 100644 --- a/intern/libmv/libmv/autotrack/autotrack.cc +++ b/intern/libmv/libmv/autotrack/autotrack.cc @@ -111,6 +111,17 @@ FrameAccessor::Key GetImageForMarker(const Marker& marker, image); } +FrameAccessor::Key GetMaskForMarker(const Marker& marker, + FrameAccessor* frame_accessor, + FloatImage* mask) { + Region region = marker.search_region.Rounded(); + return frame_accessor->GetMaskForTrack(marker.clip, + marker.frame, + marker.track, + ®ion, + mask); +} + } // namespace bool AutoTrack::TrackMarker(Marker* tracked_marker, @@ -149,6 +160,11 @@ bool AutoTrack::TrackMarker(Marker* tracked_marker, return false; } + FloatImage reference_mask; + FrameAccessor::Key reference_mask_key = GetMaskForMarker(reference_marker, + frame_accessor_, + &reference_mask); + FloatImage tracked_image; FrameAccessor::Key tracked_key = GetImageForMarker(*tracked_marker, frame_accessor_, @@ -167,6 +183,10 @@ bool AutoTrack::TrackMarker(Marker* tracked_marker, if (track_options) { local_track_region_options = *track_options; } + if (reference_mask_key != NULL) { + LG << "Using mask for reference marker: " << reference_marker; + local_track_region_options.image1_mask = &reference_mask; + } local_track_region_options.num_extra_points = 1; // For center point. local_track_region_options.attempt_refine_before_brute = predicted_position; TrackRegion(reference_image, @@ -191,9 +211,10 @@ bool AutoTrack::TrackMarker(Marker* tracked_marker, tracked_marker->reference_clip = reference_marker.clip; tracked_marker->reference_frame = reference_marker.frame; - // Release the images from the accessor cache. + // Release the images and masks from the accessor cache. frame_accessor_->ReleaseImage(reference_key); frame_accessor_->ReleaseImage(tracked_key); + frame_accessor_->ReleaseMask(reference_mask_key); // TODO(keir): Possibly the return here should get removed since the results // are part of TrackResult. However, eventually the autotrack stuff will have diff --git a/intern/libmv/libmv/autotrack/frame_accessor.h b/intern/libmv/libmv/autotrack/frame_accessor.h index 8de5d865cd7..32f6349963c 100644 --- a/intern/libmv/libmv/autotrack/frame_accessor.h +++ b/intern/libmv/libmv/autotrack/frame_accessor.h @@ -76,6 +76,25 @@ struct FrameAccessor { // free the image immediately; others may hold onto the image. virtual void ReleaseImage(Key) = 0; + // Get mask image for the given track. + // + // Implementation of this method should sample mask associated with the track + // within given region to the given destination. + // + // Result is supposed to be a single channel image. + // + // If region is NULL, it it assumed to be full-frame. + virtual Key GetMaskForTrack(int clip, + int frame, + int track, + const Region* region, + FloatImage* destination) = 0; + + // Release a specified mask. + // + // Non-caching implementation may free used memory immediately. + virtual void ReleaseMask(Key key) = 0; + virtual bool GetClipDimensions(int clip, int* width, int* height) = 0; virtual int NumClips() = 0; virtual int NumFrames(int clip) = 0; diff --git a/intern/opencolorio/CMakeLists.txt b/intern/opencolorio/CMakeLists.txt index d2dd8a3c419..2611477252a 100644 --- a/intern/opencolorio/CMakeLists.txt +++ b/intern/opencolorio/CMakeLists.txt @@ -60,7 +60,7 @@ if(WITH_OPENCOLORIO) ocio_impl_glsl.cc ) - if(WIN32 AND NOT MINGW) + if(WIN32) list(APPEND INC_SYS ${BOOST_INCLUDE_DIR} ) |