Commit Graph

943 Commits

Author SHA1 Message Date
Sergey Sharybin
6dc4ea34e4 Multi-threaded frame calculation for movie clip proxies
This commit implements multi-threaded calculation of frames
when building proxies. Both scaling and undistortion steps
are now threaded.

Frames and proxy resolution are still handled one-by-one,
saving files after every single step. So if HDD is not so
fast, this commit could have not so much benefit.

Internal changes:

- Added IMB_scaleImBuf_threaded which scales given image
  buffer in multiple threads and uses bilinear filtering.

- libmv's camera intrinsics now have SetThreads() method
  which is used to specify how many OpenMP threads to use
  for buffer distortion/undistortion.

  And yeah, this code is using OpenMP for threading.

- Reshuffled a bit libmv-capi calls and added function
  BKE_tracking_distortion_set_threads to specify number
  of threads used by intrinscis.
2013-03-15 11:59:46 +00:00
Sergey Sharybin
1ea16dcf9b Patch #34632: DPX/Cineon speed up
Done by Julien Enche (aka trap), thanks!

From the patch comment:
This patch speeds up Cineon/DPX file loading.
Some more checks are done in dpxOpen and cineonOpen functions so IB_test
flag can now be taken into account safely, and an unnecessary call to
IMB_rect_from_float has been removed.

DPX/Cineon file now loads around 3 times faster on my computer.

Own comment:
Ideally, IB_rect shall indeed indicate which buffers to load, however
currently all places which reads image uses this flag.

This fact already mentioned in OpenEXR reader and it shall be fine
to skip doing rect_from_float in readers themselves.
2013-03-15 09:46:37 +00:00
Sergey Sharybin
42660a204a Skip allocating any display buffer and starting any threads
in case image buffer contains byte buffer only and it's
color space matches display space.

It was already check for this case, but it happened later
in color management routines, which is needed for saving
files, but not fast enough for realtime playback of 4K.
2013-03-15 09:35:12 +00:00
Campbell Barton
ffc8ecc587 use BLI_strncpy_rlen() rather then BLI_snprintf() when no formatting is needed.
also replace sprintf with strcpy when no formatting is done.
2013-03-14 10:39:18 +00:00
Campbell Barton
2c8d3a969d patch [#34604] Add DPI read write for BMP and OpenEXR format 2013-03-13 07:16:53 +00:00
Sergey Sharybin
ae09d2f9d8 Fixe related on #34608: MultiLayer OpenEXR (from Maya) - passes lost in Compositor Image Node
imb_exr_split_channel_name didn't set any value to layer and pass names,
leaving them uninitialized.

This is likely solves initial report, but will know for sure after testing
windows build only.
2013-03-12 10:34:14 +00:00
Campbell Barton
660be3da39 use gcc warning -Wredundant-decls, exposes some odd/duplicate declarations which have been removed. 2013-03-11 20:27:38 +00:00
Bastien Montagne
5b53a17bfb Colormanagement: Fix issue with colorspaces' description too short, and reduce usage of magic numbers. 2013-03-11 11:15:05 +00:00
Campbell Barton
221a383366 use 'bool' for BLI_/BKE_ functions. 2013-03-09 05:35:49 +00:00
Campbell Barton
ddddb7bab1 code cleanup: favor braces when blocks have mixed brace use. 2013-03-09 03:46:30 +00:00
Campbell Barton
c36f20a7d2 style cleanup 2013-03-08 04:00:06 +00:00
Antony Riakiotakis
53b7bc8f1f Change !BLI_ghashIterator_isDone to BLI_ghashIterator_notDone. It is
always used in that context so we can at least avoid reverting it twice
:p.
2013-03-06 20:55:04 +00:00
Campbell Barton
f2bb536994 code cleanup: also change BKE_blender.h BLENDER_VERSION_CHAR to 'a' so as not to confuse things. 2013-03-05 14:47:49 +00:00
Campbell Barton
384948908a patch [#34103] path_util_split_dirstring.patch, path_util_split_dirstring_2.patch, path_util_split_dirstring_3.patch
from Lawrence D'Oliveiro (ldo)

Get rid of BLI_splitdirstring, replace with calls to BLI_split_dirfile, BLI_split_dir_part and BLI_split_file_part as appropriate.
2013-03-05 06:26:10 +00:00
Campbell Barton
e39f05e5fa patch [#34103] fileops_1.patch
from Lawrence D'Oliveiro (ldo) 

Add comments and use of bool type in fileops.c
2013-03-05 03:53:22 +00:00
Campbell Barton
f44b54d2a7 patch [#34103]
from Lawrence D'Oliveiro (ldo)

More use of bool type, necessitating adding inclusion of BLI_utildefines.h, or moving it up in the inclusion order if it was already included, in various places
- storage.c: make some variables only used in bli_builddir local to that
- storage.c: BLI_file_descriptor_size should allow 0 as a valid file descriptor
- path_util.c: make pointers to non-reentrant storage returned from folder routines const, necessitating making variables holding these returned pointers const elsewhere as well
- path_util.c: BLI_string_to_utf8 closes iconv context in case of conversion error
-  blf_lang.c: fill_locales routine now has its own "languages" local variable to construct paths (was stealing internal storage belonging to BLI_get_folder before)
2013-03-05 03:17:46 +00:00
Antony Riakiotakis
47c1570e68 Image buffer rectangle operation optimization: Remove a switch statement
outside of loop and remove a function call. Should give a little speedup when
painting inside the image editor.
2013-03-05 02:47:00 +00:00
Campbell Barton
013a176c52 patch [#34103] use booleans for extensions testing.
bli_testextensie.patch - from Lawrence D'Oliveiro (ldo)
2013-03-04 18:36:37 +00:00
Sergey Sharybin
47d6d18771 Changed a way how RGB images are saving from RGBA
Before alpha channel was simply ignored causing bad looking
straight colors which is pretty much useless.

Now saving RGB would alpha-over image on top of black color,
which makes final image look really nice. It's also very
such the same what other graphics software does this.

In the future we could easily support configurable backdrop
color, which would be really the same as other SW does it.

Also, it'll probably worth adding the same mode to RGB
display of image editor.
2013-02-28 14:25:26 +00:00
Brecht Van Lommel
4f3ca854e1 Fix various warnings with clang build, and adjust cmake clang warnings flags
to include a few more that gcc is using too.
2013-02-26 21:58:06 +00:00
Campbell Barton
a9b9fcc951 style cleanup 2013-02-24 20:33:21 +00:00
Sergey Sharybin
08d356a7e0 Fix #34359: 2.66 crashes when using output node
16bit PNG and Jpeg2K exporters were not aware of the simple
fact that float buffer could have only 3 or 1 channels.
2013-02-22 09:20:22 +00:00
Sergey Sharybin
f5bdd591e9 Remove define which is not actually needed and could have been
conflicted with one from IMB_colormanagement.h
2013-02-19 13:38:36 +00:00
Campbell Barton
098e4234b1 minor change to own recent commit with transform fcurve centers and some style edits and typo corrections. 2013-02-19 02:30:02 +00:00
Sergey Sharybin
167dcc88c7 Force movie clips always use default alpha mode, before this straight
alpha was used for them which doesn't work for cleaned footage stored
in EXR file format.

Perhaps we need to support configurable alpha mode for clips, but
that's for later (maybe even after release),
2013-02-18 19:34:14 +00:00
Brecht Van Lommel
cdb8e39565 Fix for own multilayer EXR fix, should not have caused any issues might as well
make sure it works if this function gets called from other places.
2013-02-12 15:58:06 +00:00
Ton Roosendaal
58a6f07649 Bug fix #34213 (2)
Adding non-RGBA float buffers as texture crashes MipMap code.
Images with less than 4 channels not supported (yet). Not sure
if we ever should even... normals, Z, vectors, UV, Index, all
don't like downsampling.
2013-02-12 15:51:05 +00:00
Brecht Van Lommel
5354998a21 Fix #34213: crash loading openexr multilayer with use alpha disabled. 2013-02-12 14:58:58 +00:00
Sergey Sharybin
7fcc1ac48b Implemented delayed partial rect update for image buffers
Used by image painting mode, so every brush step would mark area
if affected on, but actual color space conversion would happen
later when actually displaying image.

Implemented as a rcti stored in ImBuf which is getting merged with
partial rect passed to IMB_partial_display_buffer_update_delayed.

This makes painting as fast as it currently possible and finally
solves #33935: Texture painting slow down with mouse, but not with tablet
2013-02-11 13:24:35 +00:00
Campbell Barton
942ad6d9cd style cleanup 2013-02-10 17:06:05 +00:00
Ton Roosendaal
d1136ba2ef Bug fix #34174
Multilayer files saved from Maya (and I bet others) store the 'primary' layer without
layer or pass name, just as R G B A. Allows viewers to show stuff too, I guess.

Blender now reads this as well, just allowing an empty string for the layer and pass.
2013-02-09 16:54:10 +00:00
Sergey Sharybin
bc5df753aa Fix part #33935: Texture painting slow down with mouse, but not with tablet
Issue is solved for painting on byte buffer with default sRGB display enabled.
In this case it is possible to skip any color space transform and just apply
dither if needed.

Still not sure if there's a regression in painting on flaots or not, will
continue investigation.
2013-02-08 08:18:44 +00:00
Sergey Sharybin
d648e03619 Fix #34145: 'Save Image' incorrect file type.
Own mistake in 16bit PNG support, wrong bitmask for custom flags

ftype really needs cleanup..
2013-02-07 07:24:02 +00:00
Brecht Van Lommel
a85355fdb9 Fix #34139: render display did not convert to straight alpha when dithering was enabled. 2013-02-06 20:49:33 +00:00
Campbell Barton
1c1fb24f31 fix for rangefunc being unused for int & int array.
also cast strlen to an int to avoid overflow.
2013-02-04 15:48:29 +00:00
Campbell Barton
69993c5d40 style cleanup: spaces -> tabs 2013-02-04 00:18:09 +00:00
Campbell Barton
162c331417 style cleanup 2013-01-19 06:12:25 +00:00
Sergey Sharybin
15638eaa6f Jpeg2000 should be saved with straight alpha 2013-01-15 10:00:55 +00:00
Sergey Sharybin
0ce2d278b7 Follow general mathutils rules for naming straight<->premul functions 2013-01-15 08:37:17 +00:00
Campbell Barton
9263fdb30e fix [#33781] Confusing units in displacement modifier parameters
16bit PNG images were not doing any conversions when saving linear float buffers, but would always load them as SRGB.
apply the same method used for 16bit images from floats as used in jpeg2000.
2013-01-15 08:10:02 +00:00
Campbell Barton
f9133c5ccc write 16 bit PNG files even when there is no float buffer,
the existence of a float buffer can depend on the image being used in the compositor for example, so better give the user what they expect - 16bit png if its selected from the UI.
2013-01-15 07:35:32 +00:00
Sergey Sharybin
aab01c86cf Patch #33837: ffmpeg1.1 and libav9.1 compatibility update
Patch makes it possible to compile blender with recent ffmpeg
and libav libraries, mainly by getting rid of deprecated API.

Original patch by Campbell Barton with own modifications to
support compilation with older ffmpeg versions.

This patch could break compatibility of FFV1 videos playing
back in older players, mainly because of alpha support changes.
Preserving compatibility with such players became a headache
and think it's high time to get rid of workarounds here.
2013-01-12 12:51:10 +00:00
Campbell Barton
e24443b79a style cleanup 2013-01-09 03:30:15 +00:00
Sergey Sharybin
f5317b5f0c Style cleanup in OCIO area
Also fixed typo in function name.
2013-01-08 20:55:07 +00:00
Sergey Sharybin
bb0319022d Fix #33809: Wrong exposure affect after alpha premul changes
Exposure shouldn't affect on alpha channel, only RGB shall be
affected by exposure.

Was a regression since recent alpha premul pipeline changes.
2013-01-08 20:50:26 +00:00
Sergey Sharybin
c69f571478 Remove unused IMB function which wasn't ported to new color management
Also marked some TODOs as actually solved.
2013-01-08 13:32:48 +00:00
Campbell Barton
08358a60b0 style cleanup 2013-01-08 01:48:14 +00:00
Sergey Sharybin
fa0805e287 Changes for opengl render to reflect new alpha premul pipeline
without hurting quick texture painting

- ED_view3d_draw_offscreen will now output buffer with
  transparent alpha, if sky needed it should be alpha-undered
  later.

- ED_view3d_draw_offscreen_imbuf now accepts alpha mode as an
  argument which could be either R_ADDSKY or R_PREMULALPHA

- OpenGL render and sequencer's opengl preview will now reflect
  scene's Alpha Mode

- Quick Edit will use OpenGL with transparent alpha mode
2013-01-05 15:33:18 +00:00
Sergey Sharybin
52a81c8364 There was a typo in previous commit
Additional changes:

- Made mipmapping operate with unsigned short instead of char
  which allowed to eliminate extra division by 255, so prevision
  should be a bit better now.

- Actually, this is not real unsigned short range, but it's a
  range of 255*255 which is more convenient for mipmapping, so
  made conversion functions private for scaling.c

  Not sure it worth making this functions operate in 65535
  range, for now current behavior seems to be just fine.
2013-01-04 20:34:06 +00:00
Sergey Sharybin
4990883664 Optimization for speed regression in mipmap generation
Regression was caused by alpha premul cleanup commit and the reason
of slowdown was uchar <-> float conversion which is slow.

Replaced with uchar <-> int conversion which seeps to be accurate
enough and mostly eliminates slowdown.

Slowdown was easy to notice when movie clip is used for 3d vierport
background and undistortion is enabled. In this case every frame
will re-calculate mipmaps.

It's still a nit slower than mipmap generation before cleanup
commit, but couldn't think about extra boost here atm.
2013-01-04 17:28:58 +00:00