]> source.dussan.org Git - tigervnc.git/commitdiff
H264Libav: Use nearest-neighbour sampling in scaler 1814/head
authorAndri Yngvason <andri@yngvason.is>
Thu, 22 Aug 2024 21:26:59 +0000 (21:26 +0000)
committerAndri Yngvason <andri@yngvason.is>
Thu, 22 Aug 2024 21:27:04 +0000 (21:27 +0000)
sws_getCachedContext will set a default sampling method if 0 is passed
to the flags argument. This means that when it is called again, the
flags argument will not match the flags in the context, so a new one
will be allocated every time.

To get around this problem, we assign an explicit sampling method, one
that also happens to be more efficient and just as good for this
use-case as the default one, which is bicubic interpolation.

common/rfb/H264LibavDecoderContext.cxx

index c3153fd15531c0ed3ca33d62f6c1a22912662824..73bfb68c3820e5ba7c6703b6ff302e1bfedc3f7e 100644 (file)
@@ -215,7 +215,7 @@ void H264LibavDecoderContext::decode(const uint8_t* h264_in_buffer,
 
   sws = sws_getCachedContext(sws, frame->width, frame->height, avctx->pix_fmt,
                              frame->width, frame->height, AV_PIX_FMT_RGB32,
-                             0, nullptr, nullptr, nullptr);
+                             SWS_POINT, nullptr, nullptr, nullptr);
 
   int inFull, outFull, brightness, contrast, saturation;
   const int* inTable;