From 5fef6fe0795bd3bf6712c78d40adfe905d80d7fd Mon Sep 17 00:00:00 2001
From: Elian Dib <elian.dib@inria.fr>
Date: Tue, 7 May 2019 13:40:31 +0200
Subject: [PATCH] Changed padding parameter

---
 codec.m |  6 +++---
 pad.m   | 10 ++++------
 read.m  | 11 ++++++-----
 unpad.m |  6 ++++--
 write.m |  9 ++++-----
 5 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/codec.m b/codec.m
index bfa7b7f..7d8d77b 100644
--- a/codec.m
+++ b/codec.m
@@ -29,7 +29,7 @@ p.addParameter('subSamp'    , subSamp    , @ischar);
 p.addParameter('bitDepth'   , bitDepth   , @isnumeric);
 p.addParameter('inColSpace' , 'rgb'      , @ischar);
 p.addParameter('outColSpace', 'ycbcr'    , @ischar);
-p.addParameter('padding'    , true       , @islogical);
+p.addParameter('padding'    , 8          , @isnumeric);
 p.addParameter('encode'     , true       , @islogical);
 p.addParameter('decode'     , true       , @islogical);
 
@@ -65,11 +65,11 @@ end
 
 % Write input yuv file
 if LFParams.encode
-    [imgSize,imgRes] = LF.write(LFRef,LFParams,'filename',LFParams.refFilename);
+    [imgSize,imgRes,imgSizePad] = LF.write(LFRef,LFParams,'filename',LFParams.refFilename);
 end
 
 % Convert inputs for HEVC
-LFHEVCParams = LF.LFtoHEVC(imgSize,imgRes,LFParams,HEVCParams);
+LFHEVCParams = LF.LFtoHEVC(imgSizePad,imgRes,LFParams,HEVCParams);
 
 % Encode frames using HEVC
 [nbBits,peaksnr] = HEVC.codec(LFHEVCParams,HEVCParams);
diff --git a/pad.m b/pad.m
index e8aad25..1e26b76 100644
--- a/pad.m
+++ b/pad.m
@@ -1,17 +1,15 @@
-function [LFRef,LFSizePad] = pad(LFRef,blockSize)
+function [LFRef,imgSizePad] = pad(LFRef,padding)
 %PAD Pad lightfield data
 %   [LFRef,LFSizePad] = pad(LFRef,blockSize)
 
 LFSize  = size(LFRef);
-LFSize(3) = 0;
 imgSize = LFSize(1:3);
 imgRes  = LFSize(4:end);
 
-imgSizePad = ceil(imgSize./blockSize).*blockSize;
+imgSizePad = ceil(imgSize./padding).*padding;
+imgSizePad(3) = imgSize(3);
 
-LFSizePad = [imgSizePad,imgRes];
-
-padSize     = LFSizePad-LFSize;
+padSize     = [imgSizePad-imgSize,zeros(1,numel(imgRes))];
 padSizePre  = floor(padSize/2);
 padSizePost = padSize - padSizePre;
 
diff --git a/read.m b/read.m
index 81d8c5d..4c2eda7 100644
--- a/read.m
+++ b/read.m
@@ -7,7 +7,7 @@ filename = fullfile(pwd,'sequence');
 % Create input parser scheme
 p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
 p.addParameter('filename', filename, @ischar);
-p.addParameter('padding' , false   , @islogical);
+p.addParameter('padding' , 1       , @isnumeric);
 
 % Parse arguments
 p.parse(varargin{:});
@@ -15,13 +15,14 @@ p.parse(varargin{:});
 padding  = p.Results.padding;
 
 % Recover frames
-frames = yuv.read(imgSize,imgRes,varargin{:});
+imgSizePad = ceil(imgSize./padding).*padding;
+imgSizePad(3) = imgSize(3);
+frames = yuv.read(imgSizePad,imgRes,varargin{:});
 
 % Recover LF
 LFRec = LF.fromSlices(frames);
 
-if padding
-    LFRec = LF.unpad(LFRec,[imgSize,imgRes]);
-end
+% Undo padding
+LFRec = LF.unpad(LFRec,imgSize);
 
 end
\ No newline at end of file
diff --git a/unpad.m b/unpad.m
index b62c825..f987f97 100644
--- a/unpad.m
+++ b/unpad.m
@@ -1,10 +1,12 @@
-function LFRef = unpad(LFRef,LFSize)
+function LFRef = unpad(LFRef,imgSize)
 %UNPAD Remove padding from lightfield data
 %   LFRef = unpad(LFRef,LFSize)
 
 LFSizePad = size(LFRef);
+imgSizePad = LFSizePad(1:3);
+imgRes = LFSizePad(4:end);
 
-padSize     = LFSizePad-LFSize;
+padSize     = [imgSizePad-imgSize,zeros(1,numel(imgRes))];
 padSizePre  = floor(padSize/2);
 padSizePost = padSize - padSizePre;
 
diff --git a/write.m b/write.m
index c31b486..f55c075 100644
--- a/write.m
+++ b/write.m
@@ -1,4 +1,4 @@
-function [imgSize,imgRes] = write(LFRef,varargin)
+function [imgSize,imgRes,imgSizePad] = write(LFRef,varargin)
 %WRITE Write lightfield 4D(u,v,x,y) data to yuv file
 %   [LFSize,yuvSize] = WRITE(LFRef,varargin)
 
@@ -7,7 +7,7 @@ filename = fullfile(pwd,'sequence');
 % Create input parser scheme
 p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
 p.addParameter('filename', filename, @ischar);
-p.addParameter('padding' , false   , @islogical);
+p.addParameter('padding' , 1       , @isnumeric);
 
 % Parse arguments
 p.parse(varargin{:});
@@ -22,9 +22,8 @@ m = utils.getMat(filename,true);
 m.imgSize = imgSize;
 m.imgRes  = imgRes;
 
-if padding
-    LFRef = LF.pad(LFRef,8);
-end
+% Do padding
+[LFRef,imgSizePad] = LF.pad(LFRef,padding);
 
 % Change 5D LF to a collection of 2D frames
 frames = LF.toSlices(LFRef);
-- 
GitLab