diff --git a/third-party/openh264/third_party/openh264/src/codec/encoder/core/src/encoder_ext.cpp b/third-party/openh264/third_party/openh264/src/codec/encoder/core/src/encoder_ext.cpp index 7fdbc614bf..7e0db425d6 100644 --- a/third-party/openh264/third_party/openh264/src/codec/encoder/core/src/encoder_ext.cpp +++ b/third-party/openh264/third_party/openh264/src/codec/encoder/core/src/encoder_ext.cpp @@ -1526,6 +1526,13 @@ void GetMvMvdRange (SWelsSvcCodingParam* pParam, int32_t& iMvRange, int32_t& iMv iMvRange = WELS_MIN (iMvRange, iFixMvRange); + // [subcodec] Limit MV range to 16 pixels for sprite compositing. + // Sprites use a 16px padded canvas; tighter MV range prevents referencing + // pixels outside the padding that will differ in the composite frame. + if (pParam->bSubcodecMode) { + iMvRange = WELS_MIN (iMvRange, 16); + } + iMvdRange = (iMvRange + 1) << 1; iMvdRange = WELS_MIN (iMvdRange, iFixMvdRange);