Fix T76698: Movie clip stabilize display ignore footage colorspace
settings Stabilized ImBuf just needs to use the same colorspace and alpha settings as the original one. Maniphest Tasks: T76698 Differential Revision: https://developer.blender.org/D7713
This commit is contained in:
parent
001d70eb2b
commit
abcb23f5a3
Notes:
blender-bot
2023-02-14 02:27:51 +01:00
Referenced by issue #76698, Movie clip stabilize display ignore footage colorspace settings
|
@ -42,6 +42,7 @@
|
|||
#include "BKE_movieclip.h"
|
||||
#include "BKE_tracking.h"
|
||||
|
||||
#include "IMB_colormanagement.h"
|
||||
#include "IMB_imbuf.h"
|
||||
#include "IMB_imbuf_types.h"
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
@ -1399,7 +1400,7 @@ ImBuf *BKE_tracking_stabilize_frame(
|
|||
return ibuf;
|
||||
}
|
||||
|
||||
/* Allocate frame for stabilization result. */
|
||||
/* Allocate frame for stabilization result, copy alpha mode and colorspace. */
|
||||
ibuf_flags = 0;
|
||||
if (ibuf->rect) {
|
||||
ibuf_flags |= IB_rect;
|
||||
|
@ -1409,6 +1410,7 @@ ImBuf *BKE_tracking_stabilize_frame(
|
|||
}
|
||||
|
||||
tmpibuf = IMB_allocImBuf(ibuf->x, ibuf->y, ibuf->planes, ibuf_flags);
|
||||
IMB_colormanagegent_copy_settings(ibuf, tmpibuf);
|
||||
|
||||
/* Calculate stabilization matrix. */
|
||||
BKE_tracking_stabilization_data_get(clip, framenr, width, height, tloc, &tscale, &tangle);
|
||||
|
|
|
@ -56,6 +56,7 @@ void IMB_colormanagement_validate_settings(
|
|||
|
||||
const char *IMB_colormanagement_role_colorspace_name_get(int role);
|
||||
void IMB_colormanagement_check_is_data(struct ImBuf *ibuf, const char *name);
|
||||
void IMB_colormanagegent_copy_settings(struct ImBuf *ibuf_src, struct ImBuf *ibuf_dst);
|
||||
void IMB_colormanagement_assign_float_colorspace(struct ImBuf *ibuf, const char *name);
|
||||
void IMB_colormanagement_assign_rect_colorspace(struct ImBuf *ibuf, const char *name);
|
||||
|
||||
|
|
|
@ -1349,6 +1349,23 @@ void IMB_colormanagement_check_is_data(ImBuf *ibuf, const char *name)
|
|||
}
|
||||
}
|
||||
|
||||
void IMB_colormanagegent_copy_settings(ImBuf *ibuf_src, ImBuf *ibuf_dst)
|
||||
{
|
||||
IMB_colormanagement_assign_rect_colorspace(ibuf_dst,
|
||||
IMB_colormanagement_get_rect_colorspace(ibuf_src));
|
||||
IMB_colormanagement_assign_float_colorspace(ibuf_dst,
|
||||
IMB_colormanagement_get_float_colorspace(ibuf_src));
|
||||
if (ibuf_src->flags & IB_alphamode_premul) {
|
||||
ibuf_dst->flags |= IB_alphamode_premul;
|
||||
}
|
||||
else if (ibuf_src->flags & IB_alphamode_channel_packed) {
|
||||
ibuf_dst->flags |= IB_alphamode_channel_packed;
|
||||
}
|
||||
else if (ibuf_src->flags & IB_alphamode_ignore) {
|
||||
ibuf_dst->flags |= IB_alphamode_ignore;
|
||||
}
|
||||
}
|
||||
|
||||
void IMB_colormanagement_assign_float_colorspace(ImBuf *ibuf, const char *name)
|
||||
{
|
||||
ColorSpace *colorspace = colormanage_colorspace_get_named(name);
|
||||
|
|
Loading…
Reference in New Issue