summaryrefslogtreecommitdiff
path: root/libswscale
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-01-19 01:48:47 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-01-19 02:38:48 +0100
commit2dc2e4f5af7a43d2d977805ec340f653aa9481c0 (patch)
treec504f89c50b89977535479f7735f15dde1e00b70 /libswscale
parent8045c0167dbe9779f75d1c23a97f501eca92d33e (diff)
sws: Enable full chroma resolution when needed for ED dither
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libswscale')
-rw-r--r--libswscale/utils.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libswscale/utils.c b/libswscale/utils.c
index 8637195e16..b61a4aeb87 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -999,6 +999,20 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter,
c->flags = flags;
}
}
+
+ if (flags & SWS_ERROR_DIFFUSION && !(flags & SWS_FULL_CHR_H_INT)) {
+ if(dstFormat == AV_PIX_FMT_BGR4_BYTE ||
+ dstFormat == AV_PIX_FMT_RGB4_BYTE ||
+ dstFormat == AV_PIX_FMT_BGR8 ||
+ dstFormat == AV_PIX_FMT_RGB8) {
+ av_log(c, AV_LOG_DEBUG,
+ "Error diffusion dither is only supported in full chroma interpolation for destination format '%s'\n",
+ av_get_pix_fmt_name(dstFormat));
+ flags |= SWS_FULL_CHR_H_INT;
+ c->flags = flags;
+ }
+ }
+
/* reuse chroma for 2 pixels RGB/BGR unless user wants full
* chroma interpolation */
if (flags & SWS_FULL_CHR_H_INT &&