diff --git a/decode.m b/decode.m index df9feba20e3da729a43916379837eb7e6b730911..7fd51e704f017b5c405198a6f1302444ec6464fb 100644 --- a/decode.m +++ b/decode.m @@ -10,31 +10,26 @@ p = inputParser; p.KeepUnmatched = true; p.StructExpand = true; p.addParameter('BitstreamFile','bit.hevc',@ischar); p.addParameter('ReconFile' ,'rec.yuv' ,@ischar); p.addParameter('SkipFrames' ,'0' ,@ischar); +%p.addParameter('LogFile' ,'log.rtf' ,@ischar); + % Add additional default parameters here p.parse(varargin{:}); parameters = fieldnames (p.Results); values = struct2cell(p.Results); -extraParameters = fieldnames (p.Unmatched); -extraValues = struct2cell(p.Unmatched); - -try - argList = paramToArg([parameters;extraParameters],[values;extraValues]); - status = system([TAppDecoder,' ',argList]); - if status - error('Execution with extra parameters failed, trying execution without'); - end -catch - argList = paramToArg(parameters,values); - system([TAppDecoder,' ',argList]); -end - function argList = paramToArg(parameters,values) - argList = cellfun(@(param,val) ['--',param,'=',val],... - parameters(~ind),values(~ind),'UniformOutput',false); - argList = strjoin(argList(:)); - end +% extraParameters = fieldnames (p.Unmatched); +% extraValues = struct2cell(p.Unmatched); +% argList = paramToArg([parameters;extraParameters],[values;extraValues]); + +argList = paramToArg(parameters,values); +system([TAppDecoder,' ',argList]); end +function argList = paramToArg(parameters,values) +argList = cellfun(@(param,val) ['--',param,'=',val],... + parameters,values,'UniformOutput',false); +argList = strjoin(argList(:)); +end \ No newline at end of file diff --git a/encode.m b/encode.m index 6c6b5c94fb042c6b08c689da0ad93c802d3f06ee..f1a84488152bd7fc4e85329408c8263ffedd6051 100644 --- a/encode.m +++ b/encode.m @@ -16,6 +16,7 @@ p.addParameter('LogFile' ,'log.rtf' ,@ischar); p.addParameter('SourceWidth' ,'512' ,@ischar); p.addParameter('SourceHeight' ,'512' ,@ischar); p.addParameter('InputBitDepth' ,'8' ,@ischar); +p.addParameter('InternalBitDepth' ,'8' ,@ischar); p.addParameter('InputChromaFormat','420' ,@ischar); p.addParameter('FrameRate' ,'60' ,@ischar); p.addParameter('FrameSkip' ,'0' ,@ischar); @@ -31,6 +32,17 @@ values = struct2cell(p.Results); extraParameters = fieldnames (p.Unmatched); extraValues = struct2cell(p.Unmatched); +ReconFile = p.Results.ReconFile; +BitstreamFile = p.Results.BitstreamFile; +LogFile = p.Results.LogFile; + +for file={ReconFile,BitstreamFile,LogFile} + [folder,~,~] = fileparts(file{:}); + if ~(7==exist(folder,'dir')) + mkdir(folder); + end +end + try argList = paramToArg([parameters;extraParameters],[values;extraValues]); status = system([TAppEncoder,' ',argList]); @@ -42,19 +54,18 @@ catch system([TAppEncoder,' ',argList]); end - function argList = paramToArg(parameters,values) - indConf = cellfun(@(str) strcmp(str,'ConfigFile'),parameters); - indLog = cellfun(@(str) strcmp(str,'LogFile' ),parameters); - ind = indConf|indLog; - - argConf = strjoin(['-c',values(indConf)]); - argLog = strjoin(['>' ,values(indLog) ]); - argList = cellfun(@(param,val) ['--',param,'=',val],... - parameters(~ind),values(~ind),'UniformOutput',false); - - argList = [argConf;argList;argLog]; - argList = strjoin(argList(:)); - end - end +function argList = paramToArg(parameters,values) +indConf = cellfun(@(str) strcmp(str,'ConfigFile'),parameters); +indLog = cellfun(@(str) strcmp(str,'LogFile' ),parameters); +ind = indConf|indLog; + +argConf = strjoin(['-c',values(indConf)]); +argLog = strjoin(['>' ,values(indLog) ]); +argList = cellfun(@(param,val) ['--',param,'=',val],... + parameters(~ind),values(~ind),'UniformOutput',false); + +argList = [argConf;argList;argLog]; +argList = strjoin(argList(:)); +end \ No newline at end of file