Parcourir la source

Update water-mark params.

sdk-team il y a 1 an
Parent
commit
b4df698c3e

+ 1 - 1
VERSION

@@ -1 +1 @@
-1.36.2066
+1.36.2067

+ 9 - 0
mts/include/alibabacloud/mts/model/AddSmarttagTemplateRequest.h

@@ -38,10 +38,14 @@ public:
 	void setIndustry(const std::string &industry);
 	std::string getLabelVersion() const;
 	void setLabelVersion(const std::string &labelVersion);
+	std::string getLabelCustomParamsConfig() const;
+	void setLabelCustomParamsConfig(const std::string &labelCustomParamsConfig);
 	std::string getAccessKeyId() const;
 	void setAccessKeyId(const std::string &accessKeyId);
 	std::string getScene() const;
 	void setScene(const std::string &scene);
+	std::string getTemplateConfig() const;
+	void setTemplateConfig(const std::string &templateConfig);
 	std::string getFaceCustomParamsConfig() const;
 	void setFaceCustomParamsConfig(const std::string &faceCustomParamsConfig);
 	std::string getTemplateName() const;
@@ -58,6 +62,8 @@ public:
 	void setResourceOwnerAccount(const std::string &resourceOwnerAccount);
 	std::string getOwnerAccount() const;
 	void setOwnerAccount(const std::string &ownerAccount);
+	std::string getLabelCustomCategoryIds() const;
+	void setLabelCustomCategoryIds(const std::string &labelCustomCategoryIds);
 	std::string getObjectGroupIds() const;
 	void setObjectGroupIds(const std::string &objectGroupIds);
 	long getOwnerId() const;
@@ -72,8 +78,10 @@ private:
 	std::string knowledgeConfig_;
 	std::string industry_;
 	std::string labelVersion_;
+	std::string labelCustomParamsConfig_;
 	std::string accessKeyId_;
 	std::string scene_;
+	std::string templateConfig_;
 	std::string faceCustomParamsConfig_;
 	std::string templateName_;
 	bool isDefault_;
@@ -82,6 +90,7 @@ private:
 	std::string landmarkGroupIds_;
 	std::string resourceOwnerAccount_;
 	std::string ownerAccount_;
+	std::string labelCustomCategoryIds_;
 	std::string objectGroupIds_;
 	long ownerId_;
 	std::string analyseTypes_;

+ 2 - 0
mts/include/alibabacloud/mts/model/QuerySmarttagJobResult.h

@@ -43,6 +43,7 @@ namespace AlibabaCloud
 				explicit QuerySmarttagJobResult(const std::string &payload);
 				~QuerySmarttagJobResult();
 				std::string getJobStatus()const;
+				std::string getMessage()const;
 				std::vector<Result> getResults()const;
 				std::string getUserData()const;
 
@@ -50,6 +51,7 @@ namespace AlibabaCloud
 				void parse(const std::string &payload);
 			private:
 				std::string jobStatus_;
+				std::string message_;
 				std::vector<Result> results_;
 				std::string userData_;
 

+ 3 - 0
mts/include/alibabacloud/mts/model/RegisterCustomFaceRequest.h

@@ -38,6 +38,8 @@ public:
 	void setPersonId(const std::string &personId);
 	std::string getCategoryId() const;
 	void setCategoryId(const std::string &categoryId);
+	std::string getPersonName() const;
+	void setPersonName(const std::string &personName);
 	std::string getResourceOwnerAccount() const;
 	void setResourceOwnerAccount(const std::string &resourceOwnerAccount);
 	std::string getOwnerAccount() const;
@@ -52,6 +54,7 @@ private:
 	std::string accessKeyId_;
 	std::string personId_;
 	std::string categoryId_;
+	std::string personName_;
 	std::string resourceOwnerAccount_;
 	std::string ownerAccount_;
 	long ownerId_;

+ 3 - 0
mts/include/alibabacloud/mts/model/RegisterCustomViewRequest.h

@@ -32,6 +32,8 @@ public:
 	~RegisterCustomViewRequest();
 	long getResourceOwnerId() const;
 	void setResourceOwnerId(long resourceOwnerId);
+	std::string getLabelPrompt() const;
+	void setLabelPrompt(const std::string &labelPrompt);
 	std::string getAccessKeyId() const;
 	void setAccessKeyId(const std::string &accessKeyId);
 	std::string getAlgorithm() const;
@@ -51,6 +53,7 @@ public:
 
 private:
 	long resourceOwnerId_;
+	std::string labelPrompt_;
 	std::string accessKeyId_;
 	std::string algorithm_;
 	std::string customGroupId_;

+ 6 - 6
mts/include/alibabacloud/mts/model/SubmitCopyrightJobRequest.h

@@ -34,8 +34,8 @@ public:
 	void setVisibleMessage(const std::string &visibleMessage);
 	std::string getDescription() const;
 	void setDescription(const std::string &description);
-	std::string getStartTime() const;
-	void setStartTime(const std::string &startTime);
+	long getStartTime() const;
+	void setStartTime(long startTime);
 	std::string getOutput() const;
 	void setOutput(const std::string &output);
 	std::string getUserData() const;
@@ -50,15 +50,15 @@ public:
 	void setUrl(const std::string &url);
 	std::string getInput() const;
 	void setInput(const std::string &input);
-	std::string getTotalTime() const;
-	void setTotalTime(const std::string &totalTime);
+	long getTotalTime() const;
+	void setTotalTime(long totalTime);
 	std::string getCallBack() const;
 	void setCallBack(const std::string &callBack);
 
 private:
 	std::string visibleMessage_;
 	std::string description_;
-	std::string startTime_;
+	long startTime_;
 	std::string output_;
 	std::string userData_;
 	long level_;
@@ -66,7 +66,7 @@ private:
 	std::string params_;
 	std::string url_;
 	std::string input_;
-	std::string totalTime_;
+	long totalTime_;
 	std::string callBack_;
 };
 } // namespace Model

+ 179 - 179
mts/include/alibabacloud/mts/model/SubmitJobsResult.h

@@ -36,65 +36,20 @@ namespace AlibabaCloud
 				{
 					struct Job
 					{
+						struct Input
+						{
+							std::string bucket;
+							std::string object;
+							std::string location;
+						};
+						struct MNSMessageResult
+						{
+							std::string errorCode;
+							std::string errorMessage;
+							std::string messageId;
+						};
 						struct Output
 						{
-							struct Video
-							{
-								struct BitrateBnd
-								{
-									std::string min;
-									std::string max;
-								};
-								std::string bufsize;
-								std::string qscale;
-								std::string scanMode;
-								std::string preset;
-								std::string fps;
-								std::string gop;
-								BitrateBnd bitrateBnd;
-								std::string pixFmt;
-								std::string bitrate;
-								std::string profile;
-								std::string crop;
-								std::string pad;
-								std::string codec;
-								std::string maxrate;
-								std::string maxFps;
-								std::string crf;
-								std::string height;
-								std::string degrain;
-								std::string width;
-								std::string resoPriority;
-							};
-							struct TransConfig
-							{
-								std::string isCheckAudioBitrate;
-								std::string adjDarMethod;
-								std::string isCheckAudioBitrateFail;
-								std::string isCheckVideoBitrateFail;
-								std::string isCheckReso;
-								std::string isCheckVideoBitrate;
-								std::string transMode;
-								std::string isCheckResoFail;
-							};
-							struct Encryption
-							{
-								std::string type;
-								std::string keyType;
-								std::string id;
-								std::string skipCnt;
-								std::string key;
-								std::string keyUri;
-							};
-							struct M3U8NonStandardSupport
-							{
-								struct TS
-								{
-									bool sizeSupport;
-									bool md5Support;
-								};
-								TS tS;
-							};
 							struct Audio
 							{
 								struct Volume
@@ -105,14 +60,23 @@ namespace AlibabaCloud
 								std::string codec;
 								std::string qscale;
 								Volume volume;
-								std::string samplerate;
 								std::string bitrate;
-								std::string profile;
+								std::string samplerate;
 								std::string channels;
+								std::string profile;
 							};
-							struct SuperReso
+							struct Clip
 							{
-								std::string isHalfSample;
+								struct TimeSpan
+								{
+									std::string duration;
+									std::string seek;
+								};
+								TimeSpan timeSpan;
+							};
+							struct Container
+							{
+								std::string format;
 							};
 							struct DigiWaterMark
 							{
@@ -126,32 +90,26 @@ namespace AlibabaCloud
 								InputFile1 inputFile1;
 								std::string alpha;
 							};
-							struct OutputFile
-							{
-								std::string bucket;
-								std::string object;
-								std::string roleArn;
-								std::string location;
-							};
-							struct Container
+							struct Encryption
 							{
-								std::string format;
+								std::string type;
+								std::string keyType;
+								std::string id;
+								std::string skipCnt;
+								std::string key;
+								std::string keyUri;
 							};
-							struct Clip
+							struct M3U8NonStandardSupport
 							{
-								struct TimeSpan
+								struct TS
 								{
-									std::string duration;
-									std::string seek;
+									bool md5Support;
+									bool sizeSupport;
 								};
-								TimeSpan timeSpan;
+								TS tS;
 							};
 							struct MuxConfig
 							{
-								struct Webp
-								{
-									std::string loop;
-								};
 								struct Gif
 								{
 									std::string finalDelay;
@@ -163,35 +121,60 @@ namespace AlibabaCloud
 								{
 									std::string duration;
 								};
-								Webp webp;
+								struct Webp
+								{
+									std::string loop;
+								};
 								Gif gif;
+								Webp webp;
 								Segment segment;
 							};
-							struct SubtitleConfig
+							struct OutputFile
 							{
-								struct ExtSubtitle
-								{
-									struct Input2
-									{
-										std::string bucket;
-										std::string object;
-										std::string location;
-									};
-									std::string charEnc;
-									std::string fontName;
-									Input2 input2;
-								};
-								struct Subtitle
-								{
-									std::string map;
-								};
-								std::vector<ExtSubtitle> extSubtitleList;
-								std::vector<Subtitle> subtitleList;
+								std::string bucket;
+								std::string object;
+								std::string roleArn;
+								std::string location;
 							};
 							struct Properties
 							{
+								struct Format
+								{
+									std::string numPrograms;
+									std::string size;
+									std::string formatLongName;
+									std::string startTime;
+									std::string formatName;
+									std::string numStreams;
+									std::string duration;
+									std::string bitrate;
+								};
 								struct Streams
 								{
+									struct AudioStream
+									{
+										std::string codecTag;
+										std::string codecTimeBase;
+										std::string channelLayout;
+										std::string startTime;
+										std::string duration;
+										std::string index;
+										std::string lang;
+										std::string sampleFmt;
+										std::string bitrate;
+										std::string codecName;
+										std::string samplerate;
+										std::string channels;
+										std::string timebase;
+										std::string codecTagString;
+										std::string codecLongName;
+										std::string numFrames;
+									};
+									struct SubtitleStream
+									{
+										std::string index;
+										std::string lang;
+									};
 									struct VideoStream
 									{
 										struct NetworkCost
@@ -203,11 +186,11 @@ namespace AlibabaCloud
 										std::string codecTag;
 										std::string codecTimeBase;
 										std::string sar;
-										std::string startTime;
 										std::string fps;
+										std::string startTime;
+										std::string duration;
 										std::string index;
 										std::string lang;
-										std::string duration;
 										std::string pixFmt;
 										NetworkCost networkCost;
 										std::string bitrate;
@@ -224,79 +207,106 @@ namespace AlibabaCloud
 										std::string numFrames;
 										std::string width;
 									};
-									struct AudioStream
-									{
-										std::string codecTag;
-										std::string codecTimeBase;
-										std::string channelLayout;
-										std::string startTime;
-										std::string index;
-										std::string lang;
-										std::string duration;
-										std::string sampleFmt;
-										std::string samplerate;
-										std::string bitrate;
-										std::string codecName;
-										std::string channels;
-										std::string timebase;
-										std::string codecTagString;
-										std::string codecLongName;
-										std::string numFrames;
-									};
-									struct SubtitleStream
-									{
-										std::string index;
-										std::string lang;
-									};
-									std::vector<VideoStream> videoStreamList;
 									std::vector<SubtitleStream> subtitleStreamList;
+									std::vector<VideoStream> videoStreamList;
 									std::vector<AudioStream> audioStreamList;
 								};
-								struct Format
-								{
-									std::string numPrograms;
-									std::string size;
-									std::string formatLongName;
-									std::string startTime;
-									std::string numStreams;
-									std::string formatName;
-									std::string duration;
-									std::string bitrate;
-								};
 								Format format;
 								std::string fps;
-								std::string height;
 								std::string duration;
+								std::string height;
 								std::string fileFormat;
-								std::string width;
 								std::string bitrate;
+								std::string width;
 								Streams streams;
 								std::string fileSize;
 							};
-							struct WaterMark
+							struct SubtitleConfig
 							{
-								struct InputFile
+								struct ExtSubtitle
 								{
-									std::string bucket;
-									std::string object;
-									std::string location;
+									struct Input2
+									{
+										std::string bucket;
+										std::string object;
+										std::string location;
+									};
+									std::string charEnc;
+									std::string fontName;
+									Input2 input2;
 								};
-								std::string type;
-								std::string dx;
-								std::string dy;
-								std::string waterMarkTemplateId;
+								struct Subtitle
+								{
+									std::string map;
+								};
+								std::vector<ExtSubtitle> extSubtitleList;
+								std::vector<Subtitle> subtitleList;
+							};
+							struct SuperReso
+							{
+								std::string isHalfSample;
+							};
+							struct TransConfig
+							{
+								std::string isCheckAudioBitrate;
+								std::string adjDarMethod;
+								std::string isCheckAudioBitrateFail;
+								std::string isCheckVideoBitrateFail;
+								std::string isCheckReso;
+								std::string isCheckVideoBitrate;
+								std::string transMode;
+								std::string isCheckResoFail;
+							};
+							struct Video
+							{
+								struct BitrateBnd
+								{
+									std::string min;
+									std::string max;
+								};
+								std::string bufsize;
+								std::string qscale;
+								std::string scanMode;
+								std::string preset;
+								std::string fps;
+								std::string gop;
+								BitrateBnd bitrateBnd;
+								std::string pixFmt;
+								std::string bitrate;
+								std::string profile;
+								std::string crop;
+								std::string codec;
+								std::string maxrate;
+								std::string pad;
+								std::string crf;
+								std::string maxFps;
 								std::string height;
-								std::string referPos;
+								std::string degrain;
+								std::string resoPriority;
 								std::string width;
-								InputFile inputFile;
 							};
-							struct Merge
+							struct Amix
 							{
+								std::string amixURL;
 								std::string start;
+								std::string mixDurMode;
+								std::string duration;
+								std::string map;
+							};
+							struct Merge
+							{
 								std::string mergeURL;
+								std::string start;
 								std::string duration;
 								std::string roleArn;
 							};
+							struct Opening
+							{
+								std::string start;
+								std::string openUrl;
+								std::string height;
+								std::string width;
+							};
 							struct OutSubtitle
 							{
 								struct OutSubtitleFile
@@ -311,21 +321,6 @@ namespace AlibabaCloud
 								std::string map;
 								bool success;
 							};
-							struct Amix
-							{
-								std::string amixURL;
-								std::string start;
-								std::string mixDurMode;
-								std::string duration;
-								std::string map;
-							};
-							struct Opening
-							{
-								std::string start;
-								std::string openUrl;
-								std::string height;
-								std::string width;
-							};
 							struct TailSlate
 							{
 								std::string tailUrl;
@@ -336,13 +331,30 @@ namespace AlibabaCloud
 								std::string width;
 								bool isMergeAudio;
 							};
+							struct WaterMark
+							{
+								struct InputFile
+								{
+									std::string bucket;
+									std::string object;
+									std::string location;
+								};
+								std::string type;
+								std::string dx;
+								std::string dy;
+								std::string waterMarkTemplateId;
+								std::string height;
+								std::string referPos;
+								std::string width;
+								InputFile inputFile;
+							};
 							std::string rotate;
 							DigiWaterMark digiWaterMark;
 							std::string userData;
 							Encryption encryption;
 							Properties properties;
-							SuperReso superReso;
 							Clip clip;
+							SuperReso superReso;
 							std::vector<WaterMark> waterMarkList;
 							Container container;
 							TransConfig transConfig;
@@ -365,18 +377,6 @@ namespace AlibabaCloud
 							Audio audio;
 							std::vector<Merge> mergeList;
 						};
-						struct Input
-						{
-							std::string bucket;
-							std::string object;
-							std::string location;
-						};
-						struct MNSMessageResult
-						{
-							std::string errorCode;
-							std::string errorMessage;
-							std::string messageId;
-						};
 						Input input;
 						std::string finishTime;
 						std::string message;

+ 6 - 6
mts/include/alibabacloud/mts/model/SubmitTraceAbJobRequest.h

@@ -30,8 +30,8 @@ class ALIBABACLOUD_MTS_EXPORT SubmitTraceAbJobRequest : public RpcServiceRequest
 public:
 	SubmitTraceAbJobRequest();
 	~SubmitTraceAbJobRequest();
-	std::string getStartTime() const;
-	void setStartTime(const std::string &startTime);
+	long getStartTime() const;
+	void setStartTime(long startTime);
 	std::string getOutput() const;
 	void setOutput(const std::string &output);
 	std::string getUserData() const;
@@ -44,20 +44,20 @@ public:
 	void setUrl(const std::string &url);
 	std::string getInput() const;
 	void setInput(const std::string &input);
-	std::string getTotalTime() const;
-	void setTotalTime(const std::string &totalTime);
+	long getTotalTime() const;
+	void setTotalTime(long totalTime);
 	std::string getCallBack() const;
 	void setCallBack(const std::string &callBack);
 
 private:
-	std::string startTime_;
+	long startTime_;
 	std::string output_;
 	std::string userData_;
 	std::string cipherBase64ed_;
 	long level_;
 	std::string url_;
 	std::string input_;
-	std::string totalTime_;
+	long totalTime_;
 	std::string callBack_;
 };
 } // namespace Model

+ 3 - 0
mts/include/alibabacloud/mts/model/UpdateSmarttagTemplateRequest.h

@@ -42,6 +42,8 @@ public:
 	void setAccessKeyId(const std::string &accessKeyId);
 	std::string getScene() const;
 	void setScene(const std::string &scene);
+	std::string getTemplateConfig() const;
+	void setTemplateConfig(const std::string &templateConfig);
 	std::string getFaceCustomParamsConfig() const;
 	void setFaceCustomParamsConfig(const std::string &faceCustomParamsConfig);
 	std::string getTemplateName() const;
@@ -76,6 +78,7 @@ private:
 	std::string labelVersion_;
 	std::string accessKeyId_;
 	std::string scene_;
+	std::string templateConfig_;
 	std::string faceCustomParamsConfig_;
 	std::string templateName_;
 	bool isDefault_;

+ 27 - 0
mts/src/model/AddSmarttagTemplateRequest.cc

@@ -61,6 +61,15 @@ void AddSmarttagTemplateRequest::setLabelVersion(const std::string &labelVersion
   setParameter(std::string("LabelVersion"), labelVersion);
 }
 
+std::string AddSmarttagTemplateRequest::getLabelCustomParamsConfig() const {
+  return labelCustomParamsConfig_;
+}
+
+void AddSmarttagTemplateRequest::setLabelCustomParamsConfig(const std::string &labelCustomParamsConfig) {
+  labelCustomParamsConfig_ = labelCustomParamsConfig;
+  setParameter(std::string("LabelCustomParamsConfig"), labelCustomParamsConfig);
+}
+
 std::string AddSmarttagTemplateRequest::getAccessKeyId() const {
   return accessKeyId_;
 }
@@ -79,6 +88,15 @@ void AddSmarttagTemplateRequest::setScene(const std::string &scene) {
   setParameter(std::string("Scene"), scene);
 }
 
+std::string AddSmarttagTemplateRequest::getTemplateConfig() const {
+  return templateConfig_;
+}
+
+void AddSmarttagTemplateRequest::setTemplateConfig(const std::string &templateConfig) {
+  templateConfig_ = templateConfig;
+  setParameter(std::string("TemplateConfig"), templateConfig);
+}
+
 std::string AddSmarttagTemplateRequest::getFaceCustomParamsConfig() const {
   return faceCustomParamsConfig_;
 }
@@ -151,6 +169,15 @@ void AddSmarttagTemplateRequest::setOwnerAccount(const std::string &ownerAccount
   setParameter(std::string("OwnerAccount"), ownerAccount);
 }
 
+std::string AddSmarttagTemplateRequest::getLabelCustomCategoryIds() const {
+  return labelCustomCategoryIds_;
+}
+
+void AddSmarttagTemplateRequest::setLabelCustomCategoryIds(const std::string &labelCustomCategoryIds) {
+  labelCustomCategoryIds_ = labelCustomCategoryIds;
+  setParameter(std::string("LabelCustomCategoryIds"), labelCustomCategoryIds);
+}
+
 std::string AddSmarttagTemplateRequest::getObjectGroupIds() const {
   return objectGroupIds_;
 }

+ 9 - 2
mts/src/model/QuerySmarttagJobResult.cc

@@ -43,14 +43,16 @@ void QuerySmarttagJobResult::parse(const std::string &payload)
 	for (auto valueResultsResult : allResultsNode)
 	{
 		Result resultsObject;
-		if(!valueResultsResult["Type"].isNull())
-			resultsObject.type = valueResultsResult["Type"].asString();
 		if(!valueResultsResult["Data"].isNull())
 			resultsObject.data = valueResultsResult["Data"].asString();
+		if(!valueResultsResult["Type"].isNull())
+			resultsObject.type = valueResultsResult["Type"].asString();
 		results_.push_back(resultsObject);
 	}
 	if(!value["JobStatus"].isNull())
 		jobStatus_ = value["JobStatus"].asString();
+	if(!value["Message"].isNull())
+		message_ = value["Message"].asString();
 	if(!value["UserData"].isNull())
 		userData_ = value["UserData"].asString();
 
@@ -61,6 +63,11 @@ std::string QuerySmarttagJobResult::getJobStatus()const
 	return jobStatus_;
 }
 
+std::string QuerySmarttagJobResult::getMessage()const
+{
+	return message_;
+}
+
 std::vector<QuerySmarttagJobResult::Result> QuerySmarttagJobResult::getResults()const
 {
 	return results_;

+ 9 - 0
mts/src/model/RegisterCustomFaceRequest.cc

@@ -61,6 +61,15 @@ void RegisterCustomFaceRequest::setCategoryId(const std::string &categoryId) {
   setParameter(std::string("CategoryId"), categoryId);
 }
 
+std::string RegisterCustomFaceRequest::getPersonName() const {
+  return personName_;
+}
+
+void RegisterCustomFaceRequest::setPersonName(const std::string &personName) {
+  personName_ = personName;
+  setParameter(std::string("PersonName"), personName);
+}
+
 std::string RegisterCustomFaceRequest::getResourceOwnerAccount() const {
   return resourceOwnerAccount_;
 }

+ 9 - 0
mts/src/model/RegisterCustomViewRequest.cc

@@ -34,6 +34,15 @@ void RegisterCustomViewRequest::setResourceOwnerId(long resourceOwnerId) {
   setParameter(std::string("ResourceOwnerId"), std::to_string(resourceOwnerId));
 }
 
+std::string RegisterCustomViewRequest::getLabelPrompt() const {
+  return labelPrompt_;
+}
+
+void RegisterCustomViewRequest::setLabelPrompt(const std::string &labelPrompt) {
+  labelPrompt_ = labelPrompt;
+  setParameter(std::string("LabelPrompt"), labelPrompt);
+}
+
 std::string RegisterCustomViewRequest::getAccessKeyId() const {
   return accessKeyId_;
 }

+ 6 - 6
mts/src/model/SubmitCopyrightJobRequest.cc

@@ -43,13 +43,13 @@ void SubmitCopyrightJobRequest::setDescription(const std::string &description) {
   setParameter(std::string("Description"), description);
 }
 
-std::string SubmitCopyrightJobRequest::getStartTime() const {
+long SubmitCopyrightJobRequest::getStartTime() const {
   return startTime_;
 }
 
-void SubmitCopyrightJobRequest::setStartTime(const std::string &startTime) {
+void SubmitCopyrightJobRequest::setStartTime(long startTime) {
   startTime_ = startTime;
-  setParameter(std::string("StartTime"), startTime);
+  setParameter(std::string("StartTime"), std::to_string(startTime));
 }
 
 std::string SubmitCopyrightJobRequest::getOutput() const {
@@ -115,13 +115,13 @@ void SubmitCopyrightJobRequest::setInput(const std::string &input) {
   setParameter(std::string("Input"), input);
 }
 
-std::string SubmitCopyrightJobRequest::getTotalTime() const {
+long SubmitCopyrightJobRequest::getTotalTime() const {
   return totalTime_;
 }
 
-void SubmitCopyrightJobRequest::setTotalTime(const std::string &totalTime) {
+void SubmitCopyrightJobRequest::setTotalTime(long totalTime) {
   totalTime_ = totalTime;
-  setParameter(std::string("TotalTime"), totalTime);
+  setParameter(std::string("TotalTime"), std::to_string(totalTime));
 }
 
 std::string SubmitCopyrightJobRequest::getCallBack() const {

+ 360 - 360
mts/src/model/SubmitJobsResult.cc

@@ -43,485 +43,485 @@ void SubmitJobsResult::parse(const std::string &payload)
 	for (auto valueJobResultListJobResult : allJobResultListNode)
 	{
 		JobResult jobResultListObject;
-		if(!valueJobResultListJobResult["Success"].isNull())
-			jobResultListObject.success = valueJobResultListJobResult["Success"].asString() == "true";
 		if(!valueJobResultListJobResult["Code"].isNull())
 			jobResultListObject.code = valueJobResultListJobResult["Code"].asString();
 		if(!valueJobResultListJobResult["Message"].isNull())
 			jobResultListObject.message = valueJobResultListJobResult["Message"].asString();
+		if(!valueJobResultListJobResult["Success"].isNull())
+			jobResultListObject.success = valueJobResultListJobResult["Success"].asString() == "true";
 		auto jobNode = value["Job"];
+		if(!jobNode["Code"].isNull())
+			jobResultListObject.job.code = jobNode["Code"].asString();
 		if(!jobNode["CreationTime"].isNull())
 			jobResultListObject.job.creationTime = jobNode["CreationTime"].asString();
-		if(!jobNode["Percent"].isNull())
-			jobResultListObject.job.percent = std::stol(jobNode["Percent"].asString());
 		if(!jobNode["FinishTime"].isNull())
 			jobResultListObject.job.finishTime = jobNode["FinishTime"].asString();
-		if(!jobNode["State"].isNull())
-			jobResultListObject.job.state = jobNode["State"].asString();
 		if(!jobNode["JobId"].isNull())
 			jobResultListObject.job.jobId = jobNode["JobId"].asString();
-		if(!jobNode["Code"].isNull())
-			jobResultListObject.job.code = jobNode["Code"].asString();
 		if(!jobNode["Message"].isNull())
 			jobResultListObject.job.message = jobNode["Message"].asString();
+		if(!jobNode["Percent"].isNull())
+			jobResultListObject.job.percent = std::stol(jobNode["Percent"].asString());
 		if(!jobNode["PipelineId"].isNull())
 			jobResultListObject.job.pipelineId = jobNode["PipelineId"].asString();
+		if(!jobNode["State"].isNull())
+			jobResultListObject.job.state = jobNode["State"].asString();
+		auto inputNode = jobNode["Input"];
+		if(!inputNode["Bucket"].isNull())
+			jobResultListObject.job.input.bucket = inputNode["Bucket"].asString();
+		if(!inputNode["Location"].isNull())
+			jobResultListObject.job.input.location = inputNode["Location"].asString();
+		if(!inputNode["Object"].isNull())
+			jobResultListObject.job.input.object = inputNode["Object"].asString();
+		auto mNSMessageResultNode = jobNode["MNSMessageResult"];
+		if(!mNSMessageResultNode["ErrorCode"].isNull())
+			jobResultListObject.job.mNSMessageResult.errorCode = mNSMessageResultNode["ErrorCode"].asString();
+		if(!mNSMessageResultNode["ErrorMessage"].isNull())
+			jobResultListObject.job.mNSMessageResult.errorMessage = mNSMessageResultNode["ErrorMessage"].asString();
+		if(!mNSMessageResultNode["MessageId"].isNull())
+			jobResultListObject.job.mNSMessageResult.messageId = mNSMessageResultNode["MessageId"].asString();
 		auto outputNode = jobNode["Output"];
-		if(!outputNode["WaterMarkConfigUrl"].isNull())
-			jobResultListObject.job.output.waterMarkConfigUrl = outputNode["WaterMarkConfigUrl"].asString();
+		if(!outputNode["AudioStreamMap"].isNull())
+			jobResultListObject.job.output.audioStreamMap = outputNode["AudioStreamMap"].asString();
 		if(!outputNode["DeWatermark"].isNull())
 			jobResultListObject.job.output.deWatermark = outputNode["DeWatermark"].asString();
+		if(!outputNode["MergeConfigUrl"].isNull())
+			jobResultListObject.job.output.mergeConfigUrl = outputNode["MergeConfigUrl"].asString();
 		if(!outputNode["Priority"].isNull())
 			jobResultListObject.job.output.priority = outputNode["Priority"].asString();
-		if(!outputNode["AudioStreamMap"].isNull())
-			jobResultListObject.job.output.audioStreamMap = outputNode["AudioStreamMap"].asString();
-		if(!outputNode["UserData"].isNull())
-			jobResultListObject.job.output.userData = outputNode["UserData"].asString();
-		if(!outputNode["VideoStreamMap"].isNull())
-			jobResultListObject.job.output.videoStreamMap = outputNode["VideoStreamMap"].asString();
 		if(!outputNode["Rotate"].isNull())
 			jobResultListObject.job.output.rotate = outputNode["Rotate"].asString();
-		if(!outputNode["MergeConfigUrl"].isNull())
-			jobResultListObject.job.output.mergeConfigUrl = outputNode["MergeConfigUrl"].asString();
 		if(!outputNode["TemplateId"].isNull())
 			jobResultListObject.job.output.templateId = outputNode["TemplateId"].asString();
-		auto allWaterMarkListNode = outputNode["WaterMarkList"]["WaterMark"];
-		for (auto outputNodeWaterMarkListWaterMark : allWaterMarkListNode)
+		if(!outputNode["UserData"].isNull())
+			jobResultListObject.job.output.userData = outputNode["UserData"].asString();
+		if(!outputNode["VideoStreamMap"].isNull())
+			jobResultListObject.job.output.videoStreamMap = outputNode["VideoStreamMap"].asString();
+		if(!outputNode["WaterMarkConfigUrl"].isNull())
+			jobResultListObject.job.output.waterMarkConfigUrl = outputNode["WaterMarkConfigUrl"].asString();
+		auto allAmixListNode = outputNode["AmixList"]["Amix"];
+		for (auto outputNodeAmixListAmix : allAmixListNode)
 		{
-			JobResult::Job::Output::WaterMark waterMarkObject;
-			if(!outputNodeWaterMarkListWaterMark["Type"].isNull())
-				waterMarkObject.type = outputNodeWaterMarkListWaterMark["Type"].asString();
-			if(!outputNodeWaterMarkListWaterMark["ReferPos"].isNull())
-				waterMarkObject.referPos = outputNodeWaterMarkListWaterMark["ReferPos"].asString();
-			if(!outputNodeWaterMarkListWaterMark["Dx"].isNull())
-				waterMarkObject.dx = outputNodeWaterMarkListWaterMark["Dx"].asString();
-			if(!outputNodeWaterMarkListWaterMark["Width"].isNull())
-				waterMarkObject.width = outputNodeWaterMarkListWaterMark["Width"].asString();
-			if(!outputNodeWaterMarkListWaterMark["Height"].isNull())
-				waterMarkObject.height = outputNodeWaterMarkListWaterMark["Height"].asString();
-			if(!outputNodeWaterMarkListWaterMark["WaterMarkTemplateId"].isNull())
-				waterMarkObject.waterMarkTemplateId = outputNodeWaterMarkListWaterMark["WaterMarkTemplateId"].asString();
-			if(!outputNodeWaterMarkListWaterMark["Dy"].isNull())
-				waterMarkObject.dy = outputNodeWaterMarkListWaterMark["Dy"].asString();
-			auto inputFileNode = value["InputFile"];
-			if(!inputFileNode["Object"].isNull())
-				waterMarkObject.inputFile.object = inputFileNode["Object"].asString();
-			if(!inputFileNode["Location"].isNull())
-				waterMarkObject.inputFile.location = inputFileNode["Location"].asString();
-			if(!inputFileNode["Bucket"].isNull())
-				waterMarkObject.inputFile.bucket = inputFileNode["Bucket"].asString();
-			jobResultListObject.job.output.waterMarkList.push_back(waterMarkObject);
+			JobResult::Job::Output::Amix amixObject;
+			if(!outputNodeAmixListAmix["AmixURL"].isNull())
+				amixObject.amixURL = outputNodeAmixListAmix["AmixURL"].asString();
+			if(!outputNodeAmixListAmix["Duration"].isNull())
+				amixObject.duration = outputNodeAmixListAmix["Duration"].asString();
+			if(!outputNodeAmixListAmix["Map"].isNull())
+				amixObject.map = outputNodeAmixListAmix["Map"].asString();
+			if(!outputNodeAmixListAmix["MixDurMode"].isNull())
+				amixObject.mixDurMode = outputNodeAmixListAmix["MixDurMode"].asString();
+			if(!outputNodeAmixListAmix["Start"].isNull())
+				amixObject.start = outputNodeAmixListAmix["Start"].asString();
+			jobResultListObject.job.output.amixList.push_back(amixObject);
 		}
 		auto allMergeListNode = outputNode["MergeList"]["Merge"];
 		for (auto outputNodeMergeListMerge : allMergeListNode)
 		{
 			JobResult::Job::Output::Merge mergeObject;
-			if(!outputNodeMergeListMerge["Start"].isNull())
-				mergeObject.start = outputNodeMergeListMerge["Start"].asString();
-			if(!outputNodeMergeListMerge["RoleArn"].isNull())
-				mergeObject.roleArn = outputNodeMergeListMerge["RoleArn"].asString();
-			if(!outputNodeMergeListMerge["MergeURL"].isNull())
-				mergeObject.mergeURL = outputNodeMergeListMerge["MergeURL"].asString();
 			if(!outputNodeMergeListMerge["Duration"].isNull())
 				mergeObject.duration = outputNodeMergeListMerge["Duration"].asString();
+			if(!outputNodeMergeListMerge["MergeURL"].isNull())
+				mergeObject.mergeURL = outputNodeMergeListMerge["MergeURL"].asString();
+			if(!outputNodeMergeListMerge["RoleArn"].isNull())
+				mergeObject.roleArn = outputNodeMergeListMerge["RoleArn"].asString();
+			if(!outputNodeMergeListMerge["Start"].isNull())
+				mergeObject.start = outputNodeMergeListMerge["Start"].asString();
 			jobResultListObject.job.output.mergeList.push_back(mergeObject);
 		}
+		auto allOpeningListNode = outputNode["OpeningList"]["Opening"];
+		for (auto outputNodeOpeningListOpening : allOpeningListNode)
+		{
+			JobResult::Job::Output::Opening openingObject;
+			if(!outputNodeOpeningListOpening["Height"].isNull())
+				openingObject.height = outputNodeOpeningListOpening["Height"].asString();
+			if(!outputNodeOpeningListOpening["Start"].isNull())
+				openingObject.start = outputNodeOpeningListOpening["Start"].asString();
+			if(!outputNodeOpeningListOpening["Width"].isNull())
+				openingObject.width = outputNodeOpeningListOpening["Width"].asString();
+			if(!outputNodeOpeningListOpening["openUrl"].isNull())
+				openingObject.openUrl = outputNodeOpeningListOpening["openUrl"].asString();
+			jobResultListObject.job.output.openingList.push_back(openingObject);
+		}
 		auto allOutSubtitleListNode = outputNode["OutSubtitleList"]["OutSubtitle"];
 		for (auto outputNodeOutSubtitleListOutSubtitle : allOutSubtitleListNode)
 		{
 			JobResult::Job::Output::OutSubtitle outSubtitleObject;
 			if(!outputNodeOutSubtitleListOutSubtitle["Map"].isNull())
 				outSubtitleObject.map = outputNodeOutSubtitleListOutSubtitle["Map"].asString();
-			if(!outputNodeOutSubtitleListOutSubtitle["Success"].isNull())
-				outSubtitleObject.success = outputNodeOutSubtitleListOutSubtitle["Success"].asString() == "true";
 			if(!outputNodeOutSubtitleListOutSubtitle["Message"].isNull())
 				outSubtitleObject.message = outputNodeOutSubtitleListOutSubtitle["Message"].asString();
+			if(!outputNodeOutSubtitleListOutSubtitle["Success"].isNull())
+				outSubtitleObject.success = outputNodeOutSubtitleListOutSubtitle["Success"].asString() == "true";
 			auto outSubtitleFileNode = value["OutSubtitleFile"];
-			if(!outSubtitleFileNode["RoleArn"].isNull())
-				outSubtitleObject.outSubtitleFile.roleArn = outSubtitleFileNode["RoleArn"].asString();
-			if(!outSubtitleFileNode["Object"].isNull())
-				outSubtitleObject.outSubtitleFile.object = outSubtitleFileNode["Object"].asString();
-			if(!outSubtitleFileNode["Location"].isNull())
-				outSubtitleObject.outSubtitleFile.location = outSubtitleFileNode["Location"].asString();
 			if(!outSubtitleFileNode["Bucket"].isNull())
 				outSubtitleObject.outSubtitleFile.bucket = outSubtitleFileNode["Bucket"].asString();
+			if(!outSubtitleFileNode["Location"].isNull())
+				outSubtitleObject.outSubtitleFile.location = outSubtitleFileNode["Location"].asString();
+			if(!outSubtitleFileNode["Object"].isNull())
+				outSubtitleObject.outSubtitleFile.object = outSubtitleFileNode["Object"].asString();
+			if(!outSubtitleFileNode["RoleArn"].isNull())
+				outSubtitleObject.outSubtitleFile.roleArn = outSubtitleFileNode["RoleArn"].asString();
 			jobResultListObject.job.output.outSubtitleList.push_back(outSubtitleObject);
 		}
-		auto allAmixListNode = outputNode["AmixList"]["Amix"];
-		for (auto outputNodeAmixListAmix : allAmixListNode)
-		{
-			JobResult::Job::Output::Amix amixObject;
-			if(!outputNodeAmixListAmix["Map"].isNull())
-				amixObject.map = outputNodeAmixListAmix["Map"].asString();
-			if(!outputNodeAmixListAmix["Start"].isNull())
-				amixObject.start = outputNodeAmixListAmix["Start"].asString();
-			if(!outputNodeAmixListAmix["AmixURL"].isNull())
-				amixObject.amixURL = outputNodeAmixListAmix["AmixURL"].asString();
-			if(!outputNodeAmixListAmix["Duration"].isNull())
-				amixObject.duration = outputNodeAmixListAmix["Duration"].asString();
-			if(!outputNodeAmixListAmix["MixDurMode"].isNull())
-				amixObject.mixDurMode = outputNodeAmixListAmix["MixDurMode"].asString();
-			jobResultListObject.job.output.amixList.push_back(amixObject);
-		}
-		auto allOpeningListNode = outputNode["OpeningList"]["Opening"];
-		for (auto outputNodeOpeningListOpening : allOpeningListNode)
-		{
-			JobResult::Job::Output::Opening openingObject;
-			if(!outputNodeOpeningListOpening["openUrl"].isNull())
-				openingObject.openUrl = outputNodeOpeningListOpening["openUrl"].asString();
-			if(!outputNodeOpeningListOpening["Start"].isNull())
-				openingObject.start = outputNodeOpeningListOpening["Start"].asString();
-			if(!outputNodeOpeningListOpening["Width"].isNull())
-				openingObject.width = outputNodeOpeningListOpening["Width"].asString();
-			if(!outputNodeOpeningListOpening["Height"].isNull())
-				openingObject.height = outputNodeOpeningListOpening["Height"].asString();
-			jobResultListObject.job.output.openingList.push_back(openingObject);
-		}
 		auto allTailSlateListNode = outputNode["TailSlateList"]["TailSlate"];
 		for (auto outputNodeTailSlateListTailSlate : allTailSlateListNode)
 		{
 			JobResult::Job::Output::TailSlate tailSlateObject;
-			if(!outputNodeTailSlateListTailSlate["Start"].isNull())
-				tailSlateObject.start = outputNodeTailSlateListTailSlate["Start"].asString();
 			if(!outputNodeTailSlateListTailSlate["BgColor"].isNull())
 				tailSlateObject.bgColor = outputNodeTailSlateListTailSlate["BgColor"].asString();
-			if(!outputNodeTailSlateListTailSlate["IsMergeAudio"].isNull())
-				tailSlateObject.isMergeAudio = outputNodeTailSlateListTailSlate["IsMergeAudio"].asString() == "true";
-			if(!outputNodeTailSlateListTailSlate["Width"].isNull())
-				tailSlateObject.width = outputNodeTailSlateListTailSlate["Width"].asString();
-			if(!outputNodeTailSlateListTailSlate["Height"].isNull())
-				tailSlateObject.height = outputNodeTailSlateListTailSlate["Height"].asString();
 			if(!outputNodeTailSlateListTailSlate["BlendDuration"].isNull())
 				tailSlateObject.blendDuration = outputNodeTailSlateListTailSlate["BlendDuration"].asString();
+			if(!outputNodeTailSlateListTailSlate["Height"].isNull())
+				tailSlateObject.height = outputNodeTailSlateListTailSlate["Height"].asString();
+			if(!outputNodeTailSlateListTailSlate["IsMergeAudio"].isNull())
+				tailSlateObject.isMergeAudio = outputNodeTailSlateListTailSlate["IsMergeAudio"].asString() == "true";
+			if(!outputNodeTailSlateListTailSlate["Start"].isNull())
+				tailSlateObject.start = outputNodeTailSlateListTailSlate["Start"].asString();
 			if(!outputNodeTailSlateListTailSlate["TailUrl"].isNull())
 				tailSlateObject.tailUrl = outputNodeTailSlateListTailSlate["TailUrl"].asString();
+			if(!outputNodeTailSlateListTailSlate["Width"].isNull())
+				tailSlateObject.width = outputNodeTailSlateListTailSlate["Width"].asString();
 			jobResultListObject.job.output.tailSlateList.push_back(tailSlateObject);
 		}
-		auto videoNode = outputNode["Video"];
-		if(!videoNode["Bufsize"].isNull())
-			jobResultListObject.job.output.video.bufsize = videoNode["Bufsize"].asString();
-		if(!videoNode["Degrain"].isNull())
-			jobResultListObject.job.output.video.degrain = videoNode["Degrain"].asString();
-		if(!videoNode["PixFmt"].isNull())
-			jobResultListObject.job.output.video.pixFmt = videoNode["PixFmt"].asString();
-		if(!videoNode["Pad"].isNull())
-			jobResultListObject.job.output.video.pad = videoNode["Pad"].asString();
-		if(!videoNode["Codec"].isNull())
-			jobResultListObject.job.output.video.codec = videoNode["Codec"].asString();
-		if(!videoNode["Height"].isNull())
-			jobResultListObject.job.output.video.height = videoNode["Height"].asString();
-		if(!videoNode["Qscale"].isNull())
-			jobResultListObject.job.output.video.qscale = videoNode["Qscale"].asString();
-		if(!videoNode["Crop"].isNull())
-			jobResultListObject.job.output.video.crop = videoNode["Crop"].asString();
-		if(!videoNode["Bitrate"].isNull())
-			jobResultListObject.job.output.video.bitrate = videoNode["Bitrate"].asString();
-		if(!videoNode["Maxrate"].isNull())
-			jobResultListObject.job.output.video.maxrate = videoNode["Maxrate"].asString();
-		if(!videoNode["MaxFps"].isNull())
-			jobResultListObject.job.output.video.maxFps = videoNode["MaxFps"].asString();
-		if(!videoNode["Profile"].isNull())
-			jobResultListObject.job.output.video.profile = videoNode["Profile"].asString();
-		if(!videoNode["Crf"].isNull())
-			jobResultListObject.job.output.video.crf = videoNode["Crf"].asString();
-		if(!videoNode["Gop"].isNull())
-			jobResultListObject.job.output.video.gop = videoNode["Gop"].asString();
-		if(!videoNode["Width"].isNull())
-			jobResultListObject.job.output.video.width = videoNode["Width"].asString();
-		if(!videoNode["Fps"].isNull())
-			jobResultListObject.job.output.video.fps = videoNode["Fps"].asString();
-		if(!videoNode["Preset"].isNull())
-			jobResultListObject.job.output.video.preset = videoNode["Preset"].asString();
-		if(!videoNode["ScanMode"].isNull())
-			jobResultListObject.job.output.video.scanMode = videoNode["ScanMode"].asString();
-		if(!videoNode["ResoPriority"].isNull())
-			jobResultListObject.job.output.video.resoPriority = videoNode["ResoPriority"].asString();
-		auto bitrateBndNode = videoNode["BitrateBnd"];
-		if(!bitrateBndNode["Max"].isNull())
-			jobResultListObject.job.output.video.bitrateBnd.max = bitrateBndNode["Max"].asString();
-		if(!bitrateBndNode["Min"].isNull())
-			jobResultListObject.job.output.video.bitrateBnd.min = bitrateBndNode["Min"].asString();
-		auto transConfigNode = outputNode["TransConfig"];
-		if(!transConfigNode["IsCheckAudioBitrate"].isNull())
-			jobResultListObject.job.output.transConfig.isCheckAudioBitrate = transConfigNode["IsCheckAudioBitrate"].asString();
-		if(!transConfigNode["TransMode"].isNull())
-			jobResultListObject.job.output.transConfig.transMode = transConfigNode["TransMode"].asString();
-		if(!transConfigNode["IsCheckReso"].isNull())
-			jobResultListObject.job.output.transConfig.isCheckReso = transConfigNode["IsCheckReso"].asString();
-		if(!transConfigNode["IsCheckVideoBitrateFail"].isNull())
-			jobResultListObject.job.output.transConfig.isCheckVideoBitrateFail = transConfigNode["IsCheckVideoBitrateFail"].asString();
-		if(!transConfigNode["AdjDarMethod"].isNull())
-			jobResultListObject.job.output.transConfig.adjDarMethod = transConfigNode["AdjDarMethod"].asString();
-		if(!transConfigNode["IsCheckVideoBitrate"].isNull())
-			jobResultListObject.job.output.transConfig.isCheckVideoBitrate = transConfigNode["IsCheckVideoBitrate"].asString();
-		if(!transConfigNode["IsCheckResoFail"].isNull())
-			jobResultListObject.job.output.transConfig.isCheckResoFail = transConfigNode["IsCheckResoFail"].asString();
-		if(!transConfigNode["IsCheckAudioBitrateFail"].isNull())
-			jobResultListObject.job.output.transConfig.isCheckAudioBitrateFail = transConfigNode["IsCheckAudioBitrateFail"].asString();
-		auto encryptionNode = outputNode["Encryption"];
-		if(!encryptionNode["Type"].isNull())
-			jobResultListObject.job.output.encryption.type = encryptionNode["Type"].asString();
-		if(!encryptionNode["Key"].isNull())
-			jobResultListObject.job.output.encryption.key = encryptionNode["Key"].asString();
-		if(!encryptionNode["KeyType"].isNull())
-			jobResultListObject.job.output.encryption.keyType = encryptionNode["KeyType"].asString();
-		if(!encryptionNode["Id"].isNull())
-			jobResultListObject.job.output.encryption.id = encryptionNode["Id"].asString();
-		if(!encryptionNode["KeyUri"].isNull())
-			jobResultListObject.job.output.encryption.keyUri = encryptionNode["KeyUri"].asString();
-		if(!encryptionNode["SkipCnt"].isNull())
-			jobResultListObject.job.output.encryption.skipCnt = encryptionNode["SkipCnt"].asString();
-		auto m3U8NonStandardSupportNode = outputNode["M3U8NonStandardSupport"];
-		auto tSNode = m3U8NonStandardSupportNode["TS"];
-		if(!tSNode["SizeSupport"].isNull())
-			jobResultListObject.job.output.m3U8NonStandardSupport.tS.sizeSupport = tSNode["SizeSupport"].asString() == "true";
-		if(!tSNode["Md5Support"].isNull())
-			jobResultListObject.job.output.m3U8NonStandardSupport.tS.md5Support = tSNode["Md5Support"].asString() == "true";
+		auto allWaterMarkListNode = outputNode["WaterMarkList"]["WaterMark"];
+		for (auto outputNodeWaterMarkListWaterMark : allWaterMarkListNode)
+		{
+			JobResult::Job::Output::WaterMark waterMarkObject;
+			if(!outputNodeWaterMarkListWaterMark["Dx"].isNull())
+				waterMarkObject.dx = outputNodeWaterMarkListWaterMark["Dx"].asString();
+			if(!outputNodeWaterMarkListWaterMark["Dy"].isNull())
+				waterMarkObject.dy = outputNodeWaterMarkListWaterMark["Dy"].asString();
+			if(!outputNodeWaterMarkListWaterMark["Height"].isNull())
+				waterMarkObject.height = outputNodeWaterMarkListWaterMark["Height"].asString();
+			if(!outputNodeWaterMarkListWaterMark["ReferPos"].isNull())
+				waterMarkObject.referPos = outputNodeWaterMarkListWaterMark["ReferPos"].asString();
+			if(!outputNodeWaterMarkListWaterMark["Type"].isNull())
+				waterMarkObject.type = outputNodeWaterMarkListWaterMark["Type"].asString();
+			if(!outputNodeWaterMarkListWaterMark["WaterMarkTemplateId"].isNull())
+				waterMarkObject.waterMarkTemplateId = outputNodeWaterMarkListWaterMark["WaterMarkTemplateId"].asString();
+			if(!outputNodeWaterMarkListWaterMark["Width"].isNull())
+				waterMarkObject.width = outputNodeWaterMarkListWaterMark["Width"].asString();
+			auto inputFileNode = value["InputFile"];
+			if(!inputFileNode["Bucket"].isNull())
+				waterMarkObject.inputFile.bucket = inputFileNode["Bucket"].asString();
+			if(!inputFileNode["Location"].isNull())
+				waterMarkObject.inputFile.location = inputFileNode["Location"].asString();
+			if(!inputFileNode["Object"].isNull())
+				waterMarkObject.inputFile.object = inputFileNode["Object"].asString();
+			jobResultListObject.job.output.waterMarkList.push_back(waterMarkObject);
+		}
 		auto audioNode = outputNode["Audio"];
-		if(!audioNode["Profile"].isNull())
-			jobResultListObject.job.output.audio.profile = audioNode["Profile"].asString();
+		if(!audioNode["Bitrate"].isNull())
+			jobResultListObject.job.output.audio.bitrate = audioNode["Bitrate"].asString();
+		if(!audioNode["Channels"].isNull())
+			jobResultListObject.job.output.audio.channels = audioNode["Channels"].asString();
 		if(!audioNode["Codec"].isNull())
 			jobResultListObject.job.output.audio.codec = audioNode["Codec"].asString();
-		if(!audioNode["Samplerate"].isNull())
-			jobResultListObject.job.output.audio.samplerate = audioNode["Samplerate"].asString();
+		if(!audioNode["Profile"].isNull())
+			jobResultListObject.job.output.audio.profile = audioNode["Profile"].asString();
 		if(!audioNode["Qscale"].isNull())
 			jobResultListObject.job.output.audio.qscale = audioNode["Qscale"].asString();
-		if(!audioNode["Channels"].isNull())
-			jobResultListObject.job.output.audio.channels = audioNode["Channels"].asString();
-		if(!audioNode["Bitrate"].isNull())
-			jobResultListObject.job.output.audio.bitrate = audioNode["Bitrate"].asString();
+		if(!audioNode["Samplerate"].isNull())
+			jobResultListObject.job.output.audio.samplerate = audioNode["Samplerate"].asString();
 		auto volumeNode = audioNode["Volume"];
-		if(!volumeNode["Method"].isNull())
-			jobResultListObject.job.output.audio.volume.method = volumeNode["Method"].asString();
 		if(!volumeNode["Level"].isNull())
 			jobResultListObject.job.output.audio.volume.level = volumeNode["Level"].asString();
-		auto superResoNode = outputNode["SuperReso"];
-		if(!superResoNode["IsHalfSample"].isNull())
-			jobResultListObject.job.output.superReso.isHalfSample = superResoNode["IsHalfSample"].asString();
+		if(!volumeNode["Method"].isNull())
+			jobResultListObject.job.output.audio.volume.method = volumeNode["Method"].asString();
+		auto clipNode = outputNode["Clip"];
+		auto timeSpanNode = clipNode["TimeSpan"];
+		if(!timeSpanNode["Duration"].isNull())
+			jobResultListObject.job.output.clip.timeSpan.duration = timeSpanNode["Duration"].asString();
+		if(!timeSpanNode["Seek"].isNull())
+			jobResultListObject.job.output.clip.timeSpan.seek = timeSpanNode["Seek"].asString();
+		auto containerNode = outputNode["Container"];
+		if(!containerNode["Format"].isNull())
+			jobResultListObject.job.output.container.format = containerNode["Format"].asString();
 		auto digiWaterMarkNode = outputNode["DigiWaterMark"];
-		if(!digiWaterMarkNode["Type"].isNull())
-			jobResultListObject.job.output.digiWaterMark.type = digiWaterMarkNode["Type"].asString();
 		if(!digiWaterMarkNode["Alpha"].isNull())
 			jobResultListObject.job.output.digiWaterMark.alpha = digiWaterMarkNode["Alpha"].asString();
+		if(!digiWaterMarkNode["Type"].isNull())
+			jobResultListObject.job.output.digiWaterMark.type = digiWaterMarkNode["Type"].asString();
 		auto inputFile1Node = digiWaterMarkNode["InputFile"];
-		if(!inputFile1Node["Object"].isNull())
-			jobResultListObject.job.output.digiWaterMark.inputFile1.object = inputFile1Node["Object"].asString();
-		if(!inputFile1Node["Location"].isNull())
-			jobResultListObject.job.output.digiWaterMark.inputFile1.location = inputFile1Node["Location"].asString();
 		if(!inputFile1Node["Bucket"].isNull())
 			jobResultListObject.job.output.digiWaterMark.inputFile1.bucket = inputFile1Node["Bucket"].asString();
-		auto outputFileNode = outputNode["OutputFile"];
-		if(!outputFileNode["RoleArn"].isNull())
-			jobResultListObject.job.output.outputFile.roleArn = outputFileNode["RoleArn"].asString();
-		if(!outputFileNode["Object"].isNull())
-			jobResultListObject.job.output.outputFile.object = outputFileNode["Object"].asString();
-		if(!outputFileNode["Location"].isNull())
-			jobResultListObject.job.output.outputFile.location = outputFileNode["Location"].asString();
-		if(!outputFileNode["Bucket"].isNull())
-			jobResultListObject.job.output.outputFile.bucket = outputFileNode["Bucket"].asString();
-		auto containerNode = outputNode["Container"];
-		if(!containerNode["Format"].isNull())
-			jobResultListObject.job.output.container.format = containerNode["Format"].asString();
-		auto clipNode = outputNode["Clip"];
-		auto timeSpanNode = clipNode["TimeSpan"];
-		if(!timeSpanNode["Seek"].isNull())
-			jobResultListObject.job.output.clip.timeSpan.seek = timeSpanNode["Seek"].asString();
-		if(!timeSpanNode["Duration"].isNull())
-			jobResultListObject.job.output.clip.timeSpan.duration = timeSpanNode["Duration"].asString();
+		if(!inputFile1Node["Location"].isNull())
+			jobResultListObject.job.output.digiWaterMark.inputFile1.location = inputFile1Node["Location"].asString();
+		if(!inputFile1Node["Object"].isNull())
+			jobResultListObject.job.output.digiWaterMark.inputFile1.object = inputFile1Node["Object"].asString();
+		auto encryptionNode = outputNode["Encryption"];
+		if(!encryptionNode["Id"].isNull())
+			jobResultListObject.job.output.encryption.id = encryptionNode["Id"].asString();
+		if(!encryptionNode["Key"].isNull())
+			jobResultListObject.job.output.encryption.key = encryptionNode["Key"].asString();
+		if(!encryptionNode["KeyType"].isNull())
+			jobResultListObject.job.output.encryption.keyType = encryptionNode["KeyType"].asString();
+		if(!encryptionNode["KeyUri"].isNull())
+			jobResultListObject.job.output.encryption.keyUri = encryptionNode["KeyUri"].asString();
+		if(!encryptionNode["SkipCnt"].isNull())
+			jobResultListObject.job.output.encryption.skipCnt = encryptionNode["SkipCnt"].asString();
+		if(!encryptionNode["Type"].isNull())
+			jobResultListObject.job.output.encryption.type = encryptionNode["Type"].asString();
+		auto m3U8NonStandardSupportNode = outputNode["M3U8NonStandardSupport"];
+		auto tSNode = m3U8NonStandardSupportNode["TS"];
+		if(!tSNode["Md5Support"].isNull())
+			jobResultListObject.job.output.m3U8NonStandardSupport.tS.md5Support = tSNode["Md5Support"].asString() == "true";
+		if(!tSNode["SizeSupport"].isNull())
+			jobResultListObject.job.output.m3U8NonStandardSupport.tS.sizeSupport = tSNode["SizeSupport"].asString() == "true";
 		auto muxConfigNode = outputNode["MuxConfig"];
-		auto webpNode = muxConfigNode["Webp"];
-		if(!webpNode["Loop"].isNull())
-			jobResultListObject.job.output.muxConfig.webp.loop = webpNode["Loop"].asString();
 		auto gifNode = muxConfigNode["Gif"];
-		if(!gifNode["FinalDelay"].isNull())
-			jobResultListObject.job.output.muxConfig.gif.finalDelay = gifNode["FinalDelay"].asString();
 		if(!gifNode["DitherMode"].isNull())
 			jobResultListObject.job.output.muxConfig.gif.ditherMode = gifNode["DitherMode"].asString();
-		if(!gifNode["Loop"].isNull())
-			jobResultListObject.job.output.muxConfig.gif.loop = gifNode["Loop"].asString();
+		if(!gifNode["FinalDelay"].isNull())
+			jobResultListObject.job.output.muxConfig.gif.finalDelay = gifNode["FinalDelay"].asString();
 		if(!gifNode["IsCustomPalette"].isNull())
 			jobResultListObject.job.output.muxConfig.gif.isCustomPalette = gifNode["IsCustomPalette"].asString();
+		if(!gifNode["Loop"].isNull())
+			jobResultListObject.job.output.muxConfig.gif.loop = gifNode["Loop"].asString();
 		auto segmentNode = muxConfigNode["Segment"];
 		if(!segmentNode["Duration"].isNull())
 			jobResultListObject.job.output.muxConfig.segment.duration = segmentNode["Duration"].asString();
-		auto subtitleConfigNode = outputNode["SubtitleConfig"];
-		auto allExtSubtitleListNode = subtitleConfigNode["ExtSubtitleList"]["ExtSubtitle"];
-		for (auto subtitleConfigNodeExtSubtitleListExtSubtitle : allExtSubtitleListNode)
-		{
-			JobResult::Job::Output::SubtitleConfig::ExtSubtitle extSubtitleObject;
-			if(!subtitleConfigNodeExtSubtitleListExtSubtitle["CharEnc"].isNull())
-				extSubtitleObject.charEnc = subtitleConfigNodeExtSubtitleListExtSubtitle["CharEnc"].asString();
-			if(!subtitleConfigNodeExtSubtitleListExtSubtitle["FontName"].isNull())
-				extSubtitleObject.fontName = subtitleConfigNodeExtSubtitleListExtSubtitle["FontName"].asString();
-			auto input2Node = value["Input"];
-			if(!input2Node["Object"].isNull())
-				extSubtitleObject.input2.object = input2Node["Object"].asString();
-			if(!input2Node["Location"].isNull())
-				extSubtitleObject.input2.location = input2Node["Location"].asString();
-			if(!input2Node["Bucket"].isNull())
-				extSubtitleObject.input2.bucket = input2Node["Bucket"].asString();
-			jobResultListObject.job.output.subtitleConfig.extSubtitleList.push_back(extSubtitleObject);
-		}
-		auto allSubtitleListNode = subtitleConfigNode["SubtitleList"]["Subtitle"];
-		for (auto subtitleConfigNodeSubtitleListSubtitle : allSubtitleListNode)
-		{
-			JobResult::Job::Output::SubtitleConfig::Subtitle subtitleObject;
-			if(!subtitleConfigNodeSubtitleListSubtitle["Map"].isNull())
-				subtitleObject.map = subtitleConfigNodeSubtitleListSubtitle["Map"].asString();
-			jobResultListObject.job.output.subtitleConfig.subtitleList.push_back(subtitleObject);
-		}
+		auto webpNode = muxConfigNode["Webp"];
+		if(!webpNode["Loop"].isNull())
+			jobResultListObject.job.output.muxConfig.webp.loop = webpNode["Loop"].asString();
+		auto outputFileNode = outputNode["OutputFile"];
+		if(!outputFileNode["Bucket"].isNull())
+			jobResultListObject.job.output.outputFile.bucket = outputFileNode["Bucket"].asString();
+		if(!outputFileNode["Location"].isNull())
+			jobResultListObject.job.output.outputFile.location = outputFileNode["Location"].asString();
+		if(!outputFileNode["Object"].isNull())
+			jobResultListObject.job.output.outputFile.object = outputFileNode["Object"].asString();
+		if(!outputFileNode["RoleArn"].isNull())
+			jobResultListObject.job.output.outputFile.roleArn = outputFileNode["RoleArn"].asString();
 		auto propertiesNode = outputNode["Properties"];
-		if(!propertiesNode["Width"].isNull())
-			jobResultListObject.job.output.properties.width = propertiesNode["Width"].asString();
-		if(!propertiesNode["Height"].isNull())
-			jobResultListObject.job.output.properties.height = propertiesNode["Height"].asString();
-		if(!propertiesNode["Duration"].isNull())
-			jobResultListObject.job.output.properties.duration = propertiesNode["Duration"].asString();
-		if(!propertiesNode["Fps"].isNull())
-			jobResultListObject.job.output.properties.fps = propertiesNode["Fps"].asString();
 		if(!propertiesNode["Bitrate"].isNull())
 			jobResultListObject.job.output.properties.bitrate = propertiesNode["Bitrate"].asString();
+		if(!propertiesNode["Duration"].isNull())
+			jobResultListObject.job.output.properties.duration = propertiesNode["Duration"].asString();
 		if(!propertiesNode["FileFormat"].isNull())
 			jobResultListObject.job.output.properties.fileFormat = propertiesNode["FileFormat"].asString();
 		if(!propertiesNode["FileSize"].isNull())
 			jobResultListObject.job.output.properties.fileSize = propertiesNode["FileSize"].asString();
+		if(!propertiesNode["Fps"].isNull())
+			jobResultListObject.job.output.properties.fps = propertiesNode["Fps"].asString();
+		if(!propertiesNode["Height"].isNull())
+			jobResultListObject.job.output.properties.height = propertiesNode["Height"].asString();
+		if(!propertiesNode["Width"].isNull())
+			jobResultListObject.job.output.properties.width = propertiesNode["Width"].asString();
+		auto formatNode = propertiesNode["Format"];
+		if(!formatNode["Bitrate"].isNull())
+			jobResultListObject.job.output.properties.format.bitrate = formatNode["Bitrate"].asString();
+		if(!formatNode["Duration"].isNull())
+			jobResultListObject.job.output.properties.format.duration = formatNode["Duration"].asString();
+		if(!formatNode["FormatLongName"].isNull())
+			jobResultListObject.job.output.properties.format.formatLongName = formatNode["FormatLongName"].asString();
+		if(!formatNode["FormatName"].isNull())
+			jobResultListObject.job.output.properties.format.formatName = formatNode["FormatName"].asString();
+		if(!formatNode["NumPrograms"].isNull())
+			jobResultListObject.job.output.properties.format.numPrograms = formatNode["NumPrograms"].asString();
+		if(!formatNode["NumStreams"].isNull())
+			jobResultListObject.job.output.properties.format.numStreams = formatNode["NumStreams"].asString();
+		if(!formatNode["Size"].isNull())
+			jobResultListObject.job.output.properties.format.size = formatNode["Size"].asString();
+		if(!formatNode["StartTime"].isNull())
+			jobResultListObject.job.output.properties.format.startTime = formatNode["StartTime"].asString();
 		auto streamsNode = propertiesNode["Streams"];
+		auto allAudioStreamListNode = streamsNode["AudioStreamList"]["AudioStream"];
+		for (auto streamsNodeAudioStreamListAudioStream : allAudioStreamListNode)
+		{
+			JobResult::Job::Output::Properties::Streams::AudioStream audioStreamObject;
+			if(!streamsNodeAudioStreamListAudioStream["Bitrate"].isNull())
+				audioStreamObject.bitrate = streamsNodeAudioStreamListAudioStream["Bitrate"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["ChannelLayout"].isNull())
+				audioStreamObject.channelLayout = streamsNodeAudioStreamListAudioStream["ChannelLayout"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["Channels"].isNull())
+				audioStreamObject.channels = streamsNodeAudioStreamListAudioStream["Channels"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["CodecLongName"].isNull())
+				audioStreamObject.codecLongName = streamsNodeAudioStreamListAudioStream["CodecLongName"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["CodecName"].isNull())
+				audioStreamObject.codecName = streamsNodeAudioStreamListAudioStream["CodecName"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["CodecTag"].isNull())
+				audioStreamObject.codecTag = streamsNodeAudioStreamListAudioStream["CodecTag"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["CodecTagString"].isNull())
+				audioStreamObject.codecTagString = streamsNodeAudioStreamListAudioStream["CodecTagString"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["CodecTimeBase"].isNull())
+				audioStreamObject.codecTimeBase = streamsNodeAudioStreamListAudioStream["CodecTimeBase"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["Duration"].isNull())
+				audioStreamObject.duration = streamsNodeAudioStreamListAudioStream["Duration"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["Index"].isNull())
+				audioStreamObject.index = streamsNodeAudioStreamListAudioStream["Index"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["Lang"].isNull())
+				audioStreamObject.lang = streamsNodeAudioStreamListAudioStream["Lang"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["NumFrames"].isNull())
+				audioStreamObject.numFrames = streamsNodeAudioStreamListAudioStream["NumFrames"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["SampleFmt"].isNull())
+				audioStreamObject.sampleFmt = streamsNodeAudioStreamListAudioStream["SampleFmt"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["Samplerate"].isNull())
+				audioStreamObject.samplerate = streamsNodeAudioStreamListAudioStream["Samplerate"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["StartTime"].isNull())
+				audioStreamObject.startTime = streamsNodeAudioStreamListAudioStream["StartTime"].asString();
+			if(!streamsNodeAudioStreamListAudioStream["Timebase"].isNull())
+				audioStreamObject.timebase = streamsNodeAudioStreamListAudioStream["Timebase"].asString();
+			jobResultListObject.job.output.properties.streams.audioStreamList.push_back(audioStreamObject);
+		}
+		auto allSubtitleStreamListNode = streamsNode["SubtitleStreamList"]["SubtitleStream"];
+		for (auto streamsNodeSubtitleStreamListSubtitleStream : allSubtitleStreamListNode)
+		{
+			JobResult::Job::Output::Properties::Streams::SubtitleStream subtitleStreamObject;
+			if(!streamsNodeSubtitleStreamListSubtitleStream["Index"].isNull())
+				subtitleStreamObject.index = streamsNodeSubtitleStreamListSubtitleStream["Index"].asString();
+			if(!streamsNodeSubtitleStreamListSubtitleStream["Lang"].isNull())
+				subtitleStreamObject.lang = streamsNodeSubtitleStreamListSubtitleStream["Lang"].asString();
+			jobResultListObject.job.output.properties.streams.subtitleStreamList.push_back(subtitleStreamObject);
+		}
 		auto allVideoStreamListNode = streamsNode["VideoStreamList"]["VideoStream"];
 		for (auto streamsNodeVideoStreamListVideoStream : allVideoStreamListNode)
 		{
 			JobResult::Job::Output::Properties::Streams::VideoStream videoStreamObject;
-			if(!streamsNodeVideoStreamListVideoStream["Index"].isNull())
-				videoStreamObject.index = streamsNodeVideoStreamListVideoStream["Index"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["Timebase"].isNull())
-				videoStreamObject.timebase = streamsNodeVideoStreamListVideoStream["Timebase"].asString();
 			if(!streamsNodeVideoStreamListVideoStream["AvgFPS"].isNull())
 				videoStreamObject.avgFPS = streamsNodeVideoStreamListVideoStream["AvgFPS"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["PixFmt"].isNull())
-				videoStreamObject.pixFmt = streamsNodeVideoStreamListVideoStream["PixFmt"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["Sar"].isNull())
-				videoStreamObject.sar = streamsNodeVideoStreamListVideoStream["Sar"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["Lang"].isNull())
-				videoStreamObject.lang = streamsNodeVideoStreamListVideoStream["Lang"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["CodecLongName"].isNull())
-				videoStreamObject.codecLongName = streamsNodeVideoStreamListVideoStream["CodecLongName"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["Height"].isNull())
-				videoStreamObject.height = streamsNodeVideoStreamListVideoStream["Height"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["NumFrames"].isNull())
-				videoStreamObject.numFrames = streamsNodeVideoStreamListVideoStream["NumFrames"].asString();
 			if(!streamsNodeVideoStreamListVideoStream["Bitrate"].isNull())
 				videoStreamObject.bitrate = streamsNodeVideoStreamListVideoStream["Bitrate"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["CodecLongName"].isNull())
+				videoStreamObject.codecLongName = streamsNodeVideoStreamListVideoStream["CodecLongName"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["CodecName"].isNull())
+				videoStreamObject.codecName = streamsNodeVideoStreamListVideoStream["CodecName"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["CodecTag"].isNull())
+				videoStreamObject.codecTag = streamsNodeVideoStreamListVideoStream["CodecTag"].asString();
 			if(!streamsNodeVideoStreamListVideoStream["CodecTagString"].isNull())
 				videoStreamObject.codecTagString = streamsNodeVideoStreamListVideoStream["CodecTagString"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["HasBFrames"].isNull())
-				videoStreamObject.hasBFrames = streamsNodeVideoStreamListVideoStream["HasBFrames"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["Profile"].isNull())
-				videoStreamObject.profile = streamsNodeVideoStreamListVideoStream["Profile"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["StartTime"].isNull())
-				videoStreamObject.startTime = streamsNodeVideoStreamListVideoStream["StartTime"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["CodecTimeBase"].isNull())
+				videoStreamObject.codecTimeBase = streamsNodeVideoStreamListVideoStream["CodecTimeBase"].asString();
 			if(!streamsNodeVideoStreamListVideoStream["Dar"].isNull())
 				videoStreamObject.dar = streamsNodeVideoStreamListVideoStream["Dar"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["CodecName"].isNull())
-				videoStreamObject.codecName = streamsNodeVideoStreamListVideoStream["CodecName"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["Width"].isNull())
-				videoStreamObject.width = streamsNodeVideoStreamListVideoStream["Width"].asString();
 			if(!streamsNodeVideoStreamListVideoStream["Duration"].isNull())
 				videoStreamObject.duration = streamsNodeVideoStreamListVideoStream["Duration"].asString();
 			if(!streamsNodeVideoStreamListVideoStream["Fps"].isNull())
 				videoStreamObject.fps = streamsNodeVideoStreamListVideoStream["Fps"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["CodecTag"].isNull())
-				videoStreamObject.codecTag = streamsNodeVideoStreamListVideoStream["CodecTag"].asString();
-			if(!streamsNodeVideoStreamListVideoStream["CodecTimeBase"].isNull())
-				videoStreamObject.codecTimeBase = streamsNodeVideoStreamListVideoStream["CodecTimeBase"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["HasBFrames"].isNull())
+				videoStreamObject.hasBFrames = streamsNodeVideoStreamListVideoStream["HasBFrames"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["Height"].isNull())
+				videoStreamObject.height = streamsNodeVideoStreamListVideoStream["Height"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["Index"].isNull())
+				videoStreamObject.index = streamsNodeVideoStreamListVideoStream["Index"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["Lang"].isNull())
+				videoStreamObject.lang = streamsNodeVideoStreamListVideoStream["Lang"].asString();
 			if(!streamsNodeVideoStreamListVideoStream["Level"].isNull())
 				videoStreamObject.level = streamsNodeVideoStreamListVideoStream["Level"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["NumFrames"].isNull())
+				videoStreamObject.numFrames = streamsNodeVideoStreamListVideoStream["NumFrames"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["PixFmt"].isNull())
+				videoStreamObject.pixFmt = streamsNodeVideoStreamListVideoStream["PixFmt"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["Profile"].isNull())
+				videoStreamObject.profile = streamsNodeVideoStreamListVideoStream["Profile"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["Sar"].isNull())
+				videoStreamObject.sar = streamsNodeVideoStreamListVideoStream["Sar"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["StartTime"].isNull())
+				videoStreamObject.startTime = streamsNodeVideoStreamListVideoStream["StartTime"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["Timebase"].isNull())
+				videoStreamObject.timebase = streamsNodeVideoStreamListVideoStream["Timebase"].asString();
+			if(!streamsNodeVideoStreamListVideoStream["Width"].isNull())
+				videoStreamObject.width = streamsNodeVideoStreamListVideoStream["Width"].asString();
 			auto networkCostNode = value["NetworkCost"];
-			if(!networkCostNode["PreloadTime"].isNull())
-				videoStreamObject.networkCost.preloadTime = networkCostNode["PreloadTime"].asString();
 			if(!networkCostNode["AvgBitrate"].isNull())
 				videoStreamObject.networkCost.avgBitrate = networkCostNode["AvgBitrate"].asString();
 			if(!networkCostNode["CostBandwidth"].isNull())
 				videoStreamObject.networkCost.costBandwidth = networkCostNode["CostBandwidth"].asString();
+			if(!networkCostNode["PreloadTime"].isNull())
+				videoStreamObject.networkCost.preloadTime = networkCostNode["PreloadTime"].asString();
 			jobResultListObject.job.output.properties.streams.videoStreamList.push_back(videoStreamObject);
 		}
-		auto allAudioStreamListNode = streamsNode["AudioStreamList"]["AudioStream"];
-		for (auto streamsNodeAudioStreamListAudioStream : allAudioStreamListNode)
+		auto subtitleConfigNode = outputNode["SubtitleConfig"];
+		auto allExtSubtitleListNode = subtitleConfigNode["ExtSubtitleList"]["ExtSubtitle"];
+		for (auto subtitleConfigNodeExtSubtitleListExtSubtitle : allExtSubtitleListNode)
 		{
-			JobResult::Job::Output::Properties::Streams::AudioStream audioStreamObject;
-			if(!streamsNodeAudioStreamListAudioStream["Timebase"].isNull())
-				audioStreamObject.timebase = streamsNodeAudioStreamListAudioStream["Timebase"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["Index"].isNull())
-				audioStreamObject.index = streamsNodeAudioStreamListAudioStream["Index"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["SampleFmt"].isNull())
-				audioStreamObject.sampleFmt = streamsNodeAudioStreamListAudioStream["SampleFmt"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["ChannelLayout"].isNull())
-				audioStreamObject.channelLayout = streamsNodeAudioStreamListAudioStream["ChannelLayout"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["Lang"].isNull())
-				audioStreamObject.lang = streamsNodeAudioStreamListAudioStream["Lang"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["Samplerate"].isNull())
-				audioStreamObject.samplerate = streamsNodeAudioStreamListAudioStream["Samplerate"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["CodecLongName"].isNull())
-				audioStreamObject.codecLongName = streamsNodeAudioStreamListAudioStream["CodecLongName"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["Channels"].isNull())
-				audioStreamObject.channels = streamsNodeAudioStreamListAudioStream["Channels"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["NumFrames"].isNull())
-				audioStreamObject.numFrames = streamsNodeAudioStreamListAudioStream["NumFrames"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["Bitrate"].isNull())
-				audioStreamObject.bitrate = streamsNodeAudioStreamListAudioStream["Bitrate"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["CodecTagString"].isNull())
-				audioStreamObject.codecTagString = streamsNodeAudioStreamListAudioStream["CodecTagString"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["StartTime"].isNull())
-				audioStreamObject.startTime = streamsNodeAudioStreamListAudioStream["StartTime"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["CodecName"].isNull())
-				audioStreamObject.codecName = streamsNodeAudioStreamListAudioStream["CodecName"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["Duration"].isNull())
-				audioStreamObject.duration = streamsNodeAudioStreamListAudioStream["Duration"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["CodecTag"].isNull())
-				audioStreamObject.codecTag = streamsNodeAudioStreamListAudioStream["CodecTag"].asString();
-			if(!streamsNodeAudioStreamListAudioStream["CodecTimeBase"].isNull())
-				audioStreamObject.codecTimeBase = streamsNodeAudioStreamListAudioStream["CodecTimeBase"].asString();
-			jobResultListObject.job.output.properties.streams.audioStreamList.push_back(audioStreamObject);
+			JobResult::Job::Output::SubtitleConfig::ExtSubtitle extSubtitleObject;
+			if(!subtitleConfigNodeExtSubtitleListExtSubtitle["CharEnc"].isNull())
+				extSubtitleObject.charEnc = subtitleConfigNodeExtSubtitleListExtSubtitle["CharEnc"].asString();
+			if(!subtitleConfigNodeExtSubtitleListExtSubtitle["FontName"].isNull())
+				extSubtitleObject.fontName = subtitleConfigNodeExtSubtitleListExtSubtitle["FontName"].asString();
+			auto input2Node = value["Input"];
+			if(!input2Node["Bucket"].isNull())
+				extSubtitleObject.input2.bucket = input2Node["Bucket"].asString();
+			if(!input2Node["Location"].isNull())
+				extSubtitleObject.input2.location = input2Node["Location"].asString();
+			if(!input2Node["Object"].isNull())
+				extSubtitleObject.input2.object = input2Node["Object"].asString();
+			jobResultListObject.job.output.subtitleConfig.extSubtitleList.push_back(extSubtitleObject);
 		}
-		auto allSubtitleStreamListNode = streamsNode["SubtitleStreamList"]["SubtitleStream"];
-		for (auto streamsNodeSubtitleStreamListSubtitleStream : allSubtitleStreamListNode)
+		auto allSubtitleListNode = subtitleConfigNode["SubtitleList"]["Subtitle"];
+		for (auto subtitleConfigNodeSubtitleListSubtitle : allSubtitleListNode)
 		{
-			JobResult::Job::Output::Properties::Streams::SubtitleStream subtitleStreamObject;
-			if(!streamsNodeSubtitleStreamListSubtitleStream["Index"].isNull())
-				subtitleStreamObject.index = streamsNodeSubtitleStreamListSubtitleStream["Index"].asString();
-			if(!streamsNodeSubtitleStreamListSubtitleStream["Lang"].isNull())
-				subtitleStreamObject.lang = streamsNodeSubtitleStreamListSubtitleStream["Lang"].asString();
-			jobResultListObject.job.output.properties.streams.subtitleStreamList.push_back(subtitleStreamObject);
+			JobResult::Job::Output::SubtitleConfig::Subtitle subtitleObject;
+			if(!subtitleConfigNodeSubtitleListSubtitle["Map"].isNull())
+				subtitleObject.map = subtitleConfigNodeSubtitleListSubtitle["Map"].asString();
+			jobResultListObject.job.output.subtitleConfig.subtitleList.push_back(subtitleObject);
 		}
-		auto formatNode = propertiesNode["Format"];
-		if(!formatNode["StartTime"].isNull())
-			jobResultListObject.job.output.properties.format.startTime = formatNode["StartTime"].asString();
-		if(!formatNode["NumPrograms"].isNull())
-			jobResultListObject.job.output.properties.format.numPrograms = formatNode["NumPrograms"].asString();
-		if(!formatNode["Size"].isNull())
-			jobResultListObject.job.output.properties.format.size = formatNode["Size"].asString();
-		if(!formatNode["NumStreams"].isNull())
-			jobResultListObject.job.output.properties.format.numStreams = formatNode["NumStreams"].asString();
-		if(!formatNode["FormatLongName"].isNull())
-			jobResultListObject.job.output.properties.format.formatLongName = formatNode["FormatLongName"].asString();
-		if(!formatNode["Duration"].isNull())
-			jobResultListObject.job.output.properties.format.duration = formatNode["Duration"].asString();
-		if(!formatNode["Bitrate"].isNull())
-			jobResultListObject.job.output.properties.format.bitrate = formatNode["Bitrate"].asString();
-		if(!formatNode["FormatName"].isNull())
-			jobResultListObject.job.output.properties.format.formatName = formatNode["FormatName"].asString();
-		auto inputNode = jobNode["Input"];
-		if(!inputNode["Object"].isNull())
-			jobResultListObject.job.input.object = inputNode["Object"].asString();
-		if(!inputNode["Location"].isNull())
-			jobResultListObject.job.input.location = inputNode["Location"].asString();
-		if(!inputNode["Bucket"].isNull())
-			jobResultListObject.job.input.bucket = inputNode["Bucket"].asString();
-		auto mNSMessageResultNode = jobNode["MNSMessageResult"];
-		if(!mNSMessageResultNode["MessageId"].isNull())
-			jobResultListObject.job.mNSMessageResult.messageId = mNSMessageResultNode["MessageId"].asString();
-		if(!mNSMessageResultNode["ErrorMessage"].isNull())
-			jobResultListObject.job.mNSMessageResult.errorMessage = mNSMessageResultNode["ErrorMessage"].asString();
-		if(!mNSMessageResultNode["ErrorCode"].isNull())
-			jobResultListObject.job.mNSMessageResult.errorCode = mNSMessageResultNode["ErrorCode"].asString();
+		auto superResoNode = outputNode["SuperReso"];
+		if(!superResoNode["IsHalfSample"].isNull())
+			jobResultListObject.job.output.superReso.isHalfSample = superResoNode["IsHalfSample"].asString();
+		auto transConfigNode = outputNode["TransConfig"];
+		if(!transConfigNode["AdjDarMethod"].isNull())
+			jobResultListObject.job.output.transConfig.adjDarMethod = transConfigNode["AdjDarMethod"].asString();
+		if(!transConfigNode["IsCheckAudioBitrate"].isNull())
+			jobResultListObject.job.output.transConfig.isCheckAudioBitrate = transConfigNode["IsCheckAudioBitrate"].asString();
+		if(!transConfigNode["IsCheckAudioBitrateFail"].isNull())
+			jobResultListObject.job.output.transConfig.isCheckAudioBitrateFail = transConfigNode["IsCheckAudioBitrateFail"].asString();
+		if(!transConfigNode["IsCheckReso"].isNull())
+			jobResultListObject.job.output.transConfig.isCheckReso = transConfigNode["IsCheckReso"].asString();
+		if(!transConfigNode["IsCheckResoFail"].isNull())
+			jobResultListObject.job.output.transConfig.isCheckResoFail = transConfigNode["IsCheckResoFail"].asString();
+		if(!transConfigNode["IsCheckVideoBitrate"].isNull())
+			jobResultListObject.job.output.transConfig.isCheckVideoBitrate = transConfigNode["IsCheckVideoBitrate"].asString();
+		if(!transConfigNode["IsCheckVideoBitrateFail"].isNull())
+			jobResultListObject.job.output.transConfig.isCheckVideoBitrateFail = transConfigNode["IsCheckVideoBitrateFail"].asString();
+		if(!transConfigNode["TransMode"].isNull())
+			jobResultListObject.job.output.transConfig.transMode = transConfigNode["TransMode"].asString();
+		auto videoNode = outputNode["Video"];
+		if(!videoNode["Bitrate"].isNull())
+			jobResultListObject.job.output.video.bitrate = videoNode["Bitrate"].asString();
+		if(!videoNode["Bufsize"].isNull())
+			jobResultListObject.job.output.video.bufsize = videoNode["Bufsize"].asString();
+		if(!videoNode["Codec"].isNull())
+			jobResultListObject.job.output.video.codec = videoNode["Codec"].asString();
+		if(!videoNode["Crf"].isNull())
+			jobResultListObject.job.output.video.crf = videoNode["Crf"].asString();
+		if(!videoNode["Crop"].isNull())
+			jobResultListObject.job.output.video.crop = videoNode["Crop"].asString();
+		if(!videoNode["Degrain"].isNull())
+			jobResultListObject.job.output.video.degrain = videoNode["Degrain"].asString();
+		if(!videoNode["Fps"].isNull())
+			jobResultListObject.job.output.video.fps = videoNode["Fps"].asString();
+		if(!videoNode["Gop"].isNull())
+			jobResultListObject.job.output.video.gop = videoNode["Gop"].asString();
+		if(!videoNode["Height"].isNull())
+			jobResultListObject.job.output.video.height = videoNode["Height"].asString();
+		if(!videoNode["MaxFps"].isNull())
+			jobResultListObject.job.output.video.maxFps = videoNode["MaxFps"].asString();
+		if(!videoNode["Maxrate"].isNull())
+			jobResultListObject.job.output.video.maxrate = videoNode["Maxrate"].asString();
+		if(!videoNode["Pad"].isNull())
+			jobResultListObject.job.output.video.pad = videoNode["Pad"].asString();
+		if(!videoNode["PixFmt"].isNull())
+			jobResultListObject.job.output.video.pixFmt = videoNode["PixFmt"].asString();
+		if(!videoNode["Preset"].isNull())
+			jobResultListObject.job.output.video.preset = videoNode["Preset"].asString();
+		if(!videoNode["Profile"].isNull())
+			jobResultListObject.job.output.video.profile = videoNode["Profile"].asString();
+		if(!videoNode["Qscale"].isNull())
+			jobResultListObject.job.output.video.qscale = videoNode["Qscale"].asString();
+		if(!videoNode["ResoPriority"].isNull())
+			jobResultListObject.job.output.video.resoPriority = videoNode["ResoPriority"].asString();
+		if(!videoNode["ScanMode"].isNull())
+			jobResultListObject.job.output.video.scanMode = videoNode["ScanMode"].asString();
+		if(!videoNode["Width"].isNull())
+			jobResultListObject.job.output.video.width = videoNode["Width"].asString();
+		auto bitrateBndNode = videoNode["BitrateBnd"];
+		if(!bitrateBndNode["Max"].isNull())
+			jobResultListObject.job.output.video.bitrateBnd.max = bitrateBndNode["Max"].asString();
+		if(!bitrateBndNode["Min"].isNull())
+			jobResultListObject.job.output.video.bitrateBnd.min = bitrateBndNode["Min"].asString();
 		jobResultList_.push_back(jobResultListObject);
 	}
 

+ 6 - 6
mts/src/model/SubmitTraceAbJobRequest.cc

@@ -25,13 +25,13 @@ SubmitTraceAbJobRequest::SubmitTraceAbJobRequest()
 
 SubmitTraceAbJobRequest::~SubmitTraceAbJobRequest() {}
 
-std::string SubmitTraceAbJobRequest::getStartTime() const {
+long SubmitTraceAbJobRequest::getStartTime() const {
   return startTime_;
 }
 
-void SubmitTraceAbJobRequest::setStartTime(const std::string &startTime) {
+void SubmitTraceAbJobRequest::setStartTime(long startTime) {
   startTime_ = startTime;
-  setParameter(std::string("StartTime"), startTime);
+  setParameter(std::string("StartTime"), std::to_string(startTime));
 }
 
 std::string SubmitTraceAbJobRequest::getOutput() const {
@@ -88,13 +88,13 @@ void SubmitTraceAbJobRequest::setInput(const std::string &input) {
   setParameter(std::string("Input"), input);
 }
 
-std::string SubmitTraceAbJobRequest::getTotalTime() const {
+long SubmitTraceAbJobRequest::getTotalTime() const {
   return totalTime_;
 }
 
-void SubmitTraceAbJobRequest::setTotalTime(const std::string &totalTime) {
+void SubmitTraceAbJobRequest::setTotalTime(long totalTime) {
   totalTime_ = totalTime;
-  setParameter(std::string("TotalTime"), totalTime);
+  setParameter(std::string("TotalTime"), std::to_string(totalTime));
 }
 
 std::string SubmitTraceAbJobRequest::getCallBack() const {

+ 9 - 0
mts/src/model/UpdateSmarttagTemplateRequest.cc

@@ -79,6 +79,15 @@ void UpdateSmarttagTemplateRequest::setScene(const std::string &scene) {
   setParameter(std::string("Scene"), scene);
 }
 
+std::string UpdateSmarttagTemplateRequest::getTemplateConfig() const {
+  return templateConfig_;
+}
+
+void UpdateSmarttagTemplateRequest::setTemplateConfig(const std::string &templateConfig) {
+  templateConfig_ = templateConfig;
+  setParameter(std::string("TemplateConfig"), templateConfig);
+}
+
 std::string UpdateSmarttagTemplateRequest::getFaceCustomParamsConfig() const {
   return faceCustomParamsConfig_;
 }