diff --git a/codec.m b/codec.m
index 7d8d77bb1bdc217bd061e74e8ef4d68d273c9285..e4104ebd7b03bd6b6277848d8bdb4f838bfef029 100644
--- a/codec.m
+++ b/codec.m
@@ -63,9 +63,15 @@ if ~exist(recDir,'dir')
     mkdir(recDir);
 end
 
+% Do padding
+LFSize  = size(LFRef);
+LFSizePad = ceil(LFSize./LFParams.padding).*LFParams.padding-LFSize;
+LFSizePad(3:end) = 0;
+LFRef = padarray(LFRef,LFSizePad,'replicate','post');
+
 % Write input yuv file
 if LFParams.encode
-    [imgSize,imgRes,imgSizePad] = LF.write(LFRef,LFParams,'filename',LFParams.refFilename);
+    [imgSizePad,imgRes] = LF.write(LFRef,LFParams,'filename',LFParams.refFilename);
 end
 
 % Convert inputs for HEVC
@@ -76,7 +82,11 @@ LFHEVCParams = LF.LFtoHEVC(imgSizePad,imgRes,LFParams,HEVCParams);
 
 % Read output yuv file
 if LFParams.decode
-    LFRec = LF.read(imgSize,imgRes,LFParams,'filename',LFParams.recFilename);
+    LFRec = LF.read(imgSizePad,imgRes,LFParams,'filename',LFParams.recFilename);
 end
 
+% Undo padding
+gv = arrayfun(@(x) 1:x,LFSize,'UniformOutput',false);
+LFRec = LFRec(gv{:});
+
 end
\ No newline at end of file
diff --git a/pad.m b/pad.m
deleted file mode 100644
index 1e26b76edec36ed71ed1e81833da2e09b8a4d201..0000000000000000000000000000000000000000
--- a/pad.m
+++ /dev/null
@@ -1,18 +0,0 @@
-function [LFRef,imgSizePad] = pad(LFRef,padding)
-%PAD Pad lightfield data
-%   [LFRef,LFSizePad] = pad(LFRef,blockSize)
-
-LFSize  = size(LFRef);
-imgSize = LFSize(1:3);
-imgRes  = LFSize(4:end);
-
-imgSizePad = ceil(imgSize./padding).*padding;
-imgSizePad(3) = imgSize(3);
-
-padSize     = [imgSizePad-imgSize,zeros(1,numel(imgRes))];
-padSizePre  = floor(padSize/2);
-padSizePost = padSize - padSizePre;
-
-LFRef = padarray(LFRef,padSizePre ,'replicate','pre' );
-LFRef = padarray(LFRef,padSizePost,'replicate','post');
-end
\ No newline at end of file
diff --git a/read.m b/read.m
index 4c2eda78bcd1b787dae6359a434785f36baf8113..3fab737cde930b65101d9594c43f65cc8421a677 100644
--- a/read.m
+++ b/read.m
@@ -7,22 +7,15 @@ filename = fullfile(pwd,'sequence');
 % Create input parser scheme
 p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
 p.addParameter('filename', filename, @ischar);
-p.addParameter('padding' , 1       , @isnumeric);
 
 % Parse arguments
 p.parse(varargin{:});
 %filename = p.Results.filename;
-padding  = p.Results.padding;
 
 % Recover frames
-imgSizePad = ceil(imgSize./padding).*padding;
-imgSizePad(3) = imgSize(3);
-frames = yuv.read(imgSizePad,imgRes,varargin{:});
+frames = yuv.read(imgSize,imgRes,varargin{:});
 
 % Recover LF
 LFRec = LF.fromSlices(frames);
 
-% Undo padding
-LFRec = LF.unpad(LFRec,imgSize);
-
 end
\ No newline at end of file
diff --git a/unpad.m b/unpad.m
deleted file mode 100644
index f987f977e0703ff9eb22d84fb3beb9b5aebd7d6c..0000000000000000000000000000000000000000
--- a/unpad.m
+++ /dev/null
@@ -1,17 +0,0 @@
-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     = [imgSizePad-imgSize,zeros(1,numel(imgRes))];
-padSizePre  = floor(padSize/2);
-padSizePost = padSize - padSizePre;
-
-gv = arrayfun(@(lfsizepad,pre,post) (1+pre):(lfsizepad-post),...
-    LFSizePad,padSizePre,padSizePost,'UniformOutput',false);
-
-LFRef = LFRef(gv{:});
-end
\ No newline at end of file
diff --git a/write.m b/write.m
index f55c075b4a252c0252cb0d947441c0540de24607..79f07433e2ba006fe6e1349705cbc1487c0a0899 100644
--- a/write.m
+++ b/write.m
@@ -1,4 +1,4 @@
-function [imgSize,imgRes,imgSizePad] = write(LFRef,varargin)
+function [imgSize,imgRes] = write(LFRef,varargin)
 %WRITE Write lightfield 4D(u,v,x,y) data to yuv file
 %   [LFSize,yuvSize] = WRITE(LFRef,varargin)
 
@@ -7,24 +7,15 @@ filename = fullfile(pwd,'sequence');
 % Create input parser scheme
 p = inputParser; p.StructExpand = true; p.KeepUnmatched = true;
 p.addParameter('filename', filename, @ischar);
-p.addParameter('padding' , 1       , @isnumeric);
 
 % Parse arguments
 p.parse(varargin{:});
-filename = p.Results.filename;
-padding  = p.Results.padding;
+%filename = p.Results.filename;
 
 LFSize = size(LFRef);
 imgSize = LFSize(1:3);
 imgRes = LFSize(4:end);
 
-m = utils.getMat(filename,true);
-m.imgSize = imgSize;
-m.imgRes  = imgRes;
-
-% Do padding
-[LFRef,imgSizePad] = LF.pad(LFRef,padding);
-
 % Change 5D LF to a collection of 2D frames
 frames = LF.toSlices(LFRef);