diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-02-03 16:17:12 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2015-02-03 16:17:12 +0300 |
commit | 445eed8e38cceb2bd2d5e449b4efd1a61c383da8 (patch) | |
tree | 9453c0ae97358926adf1abd68ccb2defd91c0597 | |
parent | 701a7dcc87f312a207b6652a2afc2e32fe236f34 (diff) |
Fix T43403: Compositor does not respect interlaced video
This is actually issue with Image datablock, which had obscure Fields settings
but didn't allow to de-interlace the video.
Now added the option to de-interlace Image with Movie input type.
-rw-r--r-- | source/blender/blenkernel/intern/image.c | 6 | ||||
-rw-r--r-- | source/blender/editors/space_image/image_buttons.c | 5 | ||||
-rw-r--r-- | source/blender/makesdna/DNA_image_types.h | 1 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_image.c | 5 |
4 files changed, 16 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c index b103995e449..b405e0a6240 100644 --- a/source/blender/blenkernel/intern/image.c +++ b/source/blender/blenkernel/intern/image.c @@ -2600,11 +2600,15 @@ static ImBuf *image_load_movie_file(Image *ima, ImageUser *iuser, int frame) if (ima->anim == NULL) { char str[FILE_MAX]; + int flags = IB_rect; + if (ima->flag & IMA_DEINTERLACE) { + flags |= IB_animdeinterlace; + } BKE_image_user_file_path(iuser, ima, str); /* FIXME: make several stream accessible in image editor, too*/ - ima->anim = openanim(str, IB_rect, 0, ima->colorspace_settings.name); + ima->anim = openanim(str, flags, 0, ima->colorspace_settings.name); /* let's initialize this user */ if (ima->anim && iuser && iuser->frames == 0) diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index 1dcf91029c8..a8d714b9f30 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -794,6 +794,11 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, const char uiItemR(col, &imaptr, "alpha_mode", 0, IFACE_("Alpha"), ICON_NONE); } + if (ima->source == IMA_SRC_MOVIE) { + col = uiLayoutColumn(layout, false); + uiItemR(col, &imaptr, "use_deinterlace", 0, IFACE_("Deinterlace"), ICON_NONE); + } + uiItemS(layout); split = uiLayoutSplit(layout, 0.0f, false); diff --git a/source/blender/makesdna/DNA_image_types.h b/source/blender/makesdna/DNA_image_types.h index fcb894c9ebf..dca1c8330b0 100644 --- a/source/blender/makesdna/DNA_image_types.h +++ b/source/blender/makesdna/DNA_image_types.h @@ -143,6 +143,7 @@ enum { IMA_USER_FRAME_IN_RANGE = (1 << 10), /* for image user, but these flags are mixed */ IMA_VIEW_AS_RENDER = (1 << 11), IMA_IGNORE_ALPHA = (1 << 12), + IMA_DEINTERLACE = (1 << 13), }; #if (DNA_DEPRECATED_GCC_POISON == 1) diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c index bfce1b9054c..5ab6d1a231b 100644 --- a/source/blender/makesrna/intern/rna_image.c +++ b/source/blender/makesrna/intern/rna_image.c @@ -640,6 +640,11 @@ static void rna_def_image(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Use Alpha", "Use the alpha channel information from the image or make image fully opaque"); RNA_def_property_update(prop, NC_IMAGE | ND_DISPLAY, "rna_Image_colormanage_update"); + prop = RNA_def_property(srna, "use_deinterlace", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_DEINTERLACE); + RNA_def_property_ui_text(prop, "Deinterlace", "Deinterlace movie file on load"); + RNA_def_property_update(prop, NC_IMAGE | ND_DISPLAY, "rna_Image_reload_update"); + prop = RNA_def_property(srna, "is_dirty", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_funcs(prop, "rna_Image_dirty_get", NULL); RNA_def_property_clear_flag(prop, PROP_EDITABLE); |