From 49cd3954545820e827db3d6c93c55539e9fd0506 Mon Sep 17 00:00:00 2001
From: Elian Dib <elian.di@laposte.net>
Date: Mon, 8 Jun 2020 03:35:46 +0200
Subject: [PATCH] Added interpMeth parameter in read

---
 read.m | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/read.m b/read.m
index 25800fb..097efd4 100644
--- a/read.m
+++ b/read.m
@@ -53,12 +53,14 @@ fullRange = true;
 p.addParameter( 'inColSpace', 'rgb'  , @ischar);
 p.addParameter('outColSpace', 'ycbcr', @ischar);
 p.addParameter('fullRange', fullRange , @islogical);
+p.addParameter('interpMeth', 'nearest', @ischar);
 
 p.parse(varargin{:});
 
 inColSpace  = p.Results.inColSpace;
 outColSpace = p.Results.outColSpace;
 fullRange = p.Results.fullRange;
+interpMeth = p.Results.interpMeth;
 
 precision = ['uint',num2str(max(8,2^ceil(log2(bitDepth))))];
 
@@ -87,8 +89,13 @@ switch subSamp
         xgv = 1.5:2:imgSize(1); ygv = 1:2:imgSize(2);
 end
 
+% Add small offset to ensure correct nearest neighbour interpolation
+if any(strcmp(subSamp,{'422','420'})) && strcmp(interpMeth,'nearest')
+    ygv = ygv + 0.25;
+end
+
 subImgSize = [numel(xgv),numel(ygv)];
-UV = griddedInterpolant({xgv,ygv},zeros(subImgSize),'linear','nearest');
+UV = griddedInterpolant({xgv,ygv},zeros(subImgSize),interpMeth,'nearest');
 
 %% Read frames iteratively
 %filename = yuv.params2name(filename,imgSize,imgRes,subSamp,bitDepth);
-- 
GitLab