diff --git a/source/blender/imbuf/intern/anim_movie.cc b/source/blender/imbuf/intern/anim_movie.cc index adce91aed41..a9044c2aba2 100644 --- a/source/blender/imbuf/intern/anim_movie.cc +++ b/source/blender/imbuf/intern/anim_movie.cc @@ -414,14 +414,18 @@ static int startffmpeg(ImBufAnim *anim) 1); } + /* Use full_chroma_int + accurate_rnd YUV->RGB conversion flags. Otherwise + * the conversion is not fully accurate and introduces some banding and color + * shifts, particularly in dark regions. See issue #111703 or upstream + * ffmpeg ticket https://trac.ffmpeg.org/ticket/1582 */ anim->img_convert_ctx = BKE_ffmpeg_sws_get_context(anim->x, anim->y, anim->pCodecCtx->pix_fmt, anim->x, anim->y, anim->pFrameRGB->format, - SWS_BILINEAR | SWS_PRINT_INFO | - SWS_FULL_CHR_H_INT); + SWS_POINT | SWS_FULL_CHR_H_INT | + SWS_ACCURATE_RND); if (!anim->img_convert_ctx) { fprintf(stderr, diff --git a/tests/data b/tests/data index 950d2829147..4e1ce05417f 160000 --- a/tests/data +++ b/tests/data @@ -1 +1 @@ -Subproject commit 950d28291474521feeb9c2304efb8daf546bf2df +Subproject commit 4e1ce05417f0e195bdae72738e9f6770f31642a6 diff --git a/tests/python/sequencer_render_tests.py b/tests/python/sequencer_render_tests.py index 686f20fc935..0f713619baa 100644 --- a/tests/python/sequencer_render_tests.py +++ b/tests/python/sequencer_render_tests.py @@ -50,7 +50,7 @@ def main(): report = render_report.Report("Sequencer", output_dir, oiiotool) report.set_pixelated(True) # Default error tolerances are quite large, lower them. - report.set_fail_threshold(3.0 / 255.0) + report.set_fail_threshold(2.0 / 255.0) report.set_fail_percent(0.01) report.set_reference_dir("reference")