QueryComplexJobListResult.cc 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574
  1. /*
  2. * Copyright 2009-2017 Alibaba Cloud All rights reserved.
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #include <alibabacloud/mts/model/QueryComplexJobListResult.h>
  17. #include <json/json.h>
  18. using namespace AlibabaCloud::Mts;
  19. using namespace AlibabaCloud::Mts::Model;
  20. QueryComplexJobListResult::QueryComplexJobListResult() :
  21. ServiceResult()
  22. {}
  23. QueryComplexJobListResult::QueryComplexJobListResult(const std::string &payload) :
  24. ServiceResult()
  25. {
  26. parse(payload);
  27. }
  28. QueryComplexJobListResult::~QueryComplexJobListResult()
  29. {}
  30. void QueryComplexJobListResult::parse(const std::string &payload)
  31. {
  32. Json::Reader reader;
  33. Json::Value value;
  34. reader.parse(payload, value);
  35. setRequestId(value["RequestId"].asString());
  36. auto allJobList = value["JobList"]["Job"];
  37. for (auto value : allJobList)
  38. {
  39. Job jobListObject;
  40. if(!value["JobId"].isNull())
  41. jobListObject.jobId = value["JobId"].asString();
  42. if(!value["State"].isNull())
  43. jobListObject.state = value["State"].asString();
  44. if(!value["Code"].isNull())
  45. jobListObject.code = value["Code"].asString();
  46. if(!value["Message"].isNull())
  47. jobListObject.message = value["Message"].asString();
  48. if(!value["Percent"].isNull())
  49. jobListObject.percent = std::stol(value["Percent"].asString());
  50. if(!value["PipelineId"].isNull())
  51. jobListObject.pipelineId = value["PipelineId"].asString();
  52. if(!value["CreationTime"].isNull())
  53. jobListObject.creationTime = value["CreationTime"].asString();
  54. if(!value["FinishTime"].isNull())
  55. jobListObject.finishTime = value["FinishTime"].asString();
  56. auto allInputs = value["Inputs"]["InputsItem"];
  57. for (auto value : allInputs)
  58. {
  59. Job::InputsItem inputsObject;
  60. auto allEditingInputs = value["EditingInputs"]["EditingInput"];
  61. for (auto value : allEditingInputs)
  62. {
  63. Job::InputsItem::EditingInput editingInputsObject;
  64. if(!value["Id"].isNull())
  65. editingInputsObject.id = value["Id"].asString();
  66. auto inputFileNode = value["InputFile"];
  67. if(!inputFileNode["Bucket"].isNull())
  68. editingInputsObject.inputFile.bucket = inputFileNode["Bucket"].asString();
  69. if(!inputFileNode["Location"].isNull())
  70. editingInputsObject.inputFile.location = inputFileNode["Location"].asString();
  71. if(!inputFileNode["Object"].isNull())
  72. editingInputsObject.inputFile.object = inputFileNode["Object"].asString();
  73. auto inputConfigNode = value["InputConfig"];
  74. if(!inputConfigNode["DeinterlaceMethod"].isNull())
  75. editingInputsObject.inputConfig.deinterlaceMethod = inputConfigNode["DeinterlaceMethod"].asString();
  76. if(!inputConfigNode["IsNormalSar"].isNull())
  77. editingInputsObject.inputConfig.isNormalSar = inputConfigNode["IsNormalSar"].asString();
  78. inputsObject.editingInputs.push_back(editingInputsObject);
  79. }
  80. jobListObject.inputs.push_back(inputsObject);
  81. }
  82. auto allComplexEditingConfigs = value["ComplexEditingConfigs"]["ComplexEditingConfigsItem"];
  83. for (auto value : allComplexEditingConfigs)
  84. {
  85. Job::ComplexEditingConfigsItem complexEditingConfigsObject;
  86. auto editingNode = value["Editing"];
  87. auto allClipList = value["ClipList"]["Clip"];
  88. for (auto value : allClipList)
  89. {
  90. Job::ComplexEditingConfigsItem::Editing::Clip clipObject;
  91. if(!value["Id"].isNull())
  92. clipObject.id = value["Id"].asString();
  93. if(!value["Type"].isNull())
  94. clipObject.type = value["Type"].asString();
  95. if(!value["SourceType"].isNull())
  96. clipObject.sourceType = value["SourceType"].asString();
  97. if(!value["SourceID"].isNull())
  98. clipObject.sourceID = value["SourceID"].asString();
  99. if(!value["SourceStrmMap"].isNull())
  100. clipObject.sourceStrmMap = value["SourceStrmMap"].asString();
  101. if(!value["In"].isNull())
  102. clipObject.in = value["In"].asString();
  103. if(!value["Out"].isNull())
  104. clipObject.out = value["Out"].asString();
  105. auto allEffects = value["Effects"]["Effect"];
  106. for (auto value : allEffects)
  107. {
  108. Job::ComplexEditingConfigsItem::Editing::Clip::Effect effectsObject;
  109. if(!value["Effect"].isNull())
  110. effectsObject.effect = value["Effect"].asString();
  111. if(!value["EffectConfig"].isNull())
  112. effectsObject.effectConfig = value["EffectConfig"].asString();
  113. clipObject.effects.push_back(effectsObject);
  114. }
  115. complexEditingConfigsObject.editing.clipList.push_back(clipObject);
  116. }
  117. auto timelineNode = editingNode["Timeline"];
  118. auto allTrackList = value["TrackList"]["Track"];
  119. for (auto value : allTrackList)
  120. {
  121. Job::ComplexEditingConfigsItem::Editing::Timeline::Track trackObject;
  122. if(!value["Id"].isNull())
  123. trackObject.id = value["Id"].asString();
  124. if(!value["Type"].isNull())
  125. trackObject.type = value["Type"].asString();
  126. if(!value["Order"].isNull())
  127. trackObject.order = value["Order"].asString();
  128. auto allClips = value["Clips"]["Clip"];
  129. for (auto value : allClips)
  130. {
  131. Job::ComplexEditingConfigsItem::Editing::Timeline::Track::Clip1 clipsObject;
  132. if(!value["clipID"].isNull())
  133. clipsObject.clipID = value["clipID"].asString();
  134. if(!value["In"].isNull())
  135. clipsObject.in = value["In"].asString();
  136. if(!value["Out"].isNull())
  137. clipsObject.out = value["Out"].asString();
  138. auto clipsConfigNode = value["ClipsConfig"];
  139. auto clipsConfigVideoNode = clipsConfigNode["ClipsConfigVideo"];
  140. if(!clipsConfigVideoNode["L"].isNull())
  141. clipsObject.clipsConfig.clipsConfigVideo.l = clipsConfigVideoNode["L"].asString();
  142. if(!clipsConfigVideoNode["T"].isNull())
  143. clipsObject.clipsConfig.clipsConfigVideo.t = clipsConfigVideoNode["T"].asString();
  144. trackObject.clips.push_back(clipsObject);
  145. }
  146. complexEditingConfigsObject.editing.timeline.trackList.push_back(trackObject);
  147. }
  148. auto timelineConfigNode = timelineNode["TimelineConfig"];
  149. auto timelineConfigVideoNode = timelineConfigNode["TimelineConfigVideo"];
  150. if(!timelineConfigVideoNode["Width"].isNull())
  151. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigVideo.width = timelineConfigVideoNode["Width"].asString();
  152. if(!timelineConfigVideoNode["Height"].isNull())
  153. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigVideo.height = timelineConfigVideoNode["Height"].asString();
  154. if(!timelineConfigVideoNode["BgColor"].isNull())
  155. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigVideo.bgColor = timelineConfigVideoNode["BgColor"].asString();
  156. if(!timelineConfigVideoNode["Fps"].isNull())
  157. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigVideo.fps = timelineConfigVideoNode["Fps"].asString();
  158. if(!timelineConfigVideoNode["RenderRatio"].isNull())
  159. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigVideo.renderRatio = timelineConfigVideoNode["RenderRatio"].asString();
  160. if(!timelineConfigVideoNode["ReclosePrec"].isNull())
  161. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigVideo.reclosePrec = timelineConfigVideoNode["ReclosePrec"].asString();
  162. if(!timelineConfigVideoNode["IsGpuData"].isNull())
  163. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigVideo.isGpuData = timelineConfigVideoNode["IsGpuData"].asString();
  164. if(!timelineConfigVideoNode["IsOneTrackData"].isNull())
  165. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigVideo.isOneTrackData = timelineConfigVideoNode["IsOneTrackData"].asString();
  166. auto timelineConfigAudioNode = timelineConfigNode["TimelineConfigAudio"];
  167. if(!timelineConfigAudioNode["Samplerate"].isNull())
  168. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigAudio.samplerate = timelineConfigAudioNode["Samplerate"].asString();
  169. if(!timelineConfigAudioNode["ChannelLayout"].isNull())
  170. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigAudio.channelLayout = timelineConfigAudioNode["ChannelLayout"].asString();
  171. if(!timelineConfigAudioNode["Channels"].isNull())
  172. complexEditingConfigsObject.editing.timeline.timelineConfig.timelineConfigAudio.channels = timelineConfigAudioNode["Channels"].asString();
  173. jobListObject.complexEditingConfigs.push_back(complexEditingConfigsObject);
  174. }
  175. auto transcodeOutputNode = value["transcodeOutput"];
  176. if(!transcodeOutputNode["TemplateId"].isNull())
  177. jobListObject.transcodeOutput.templateId = transcodeOutputNode["TemplateId"].asString();
  178. if(!transcodeOutputNode["UserData"].isNull())
  179. jobListObject.transcodeOutput.userData = transcodeOutputNode["UserData"].asString();
  180. if(!transcodeOutputNode["Rotate"].isNull())
  181. jobListObject.transcodeOutput.rotate = transcodeOutputNode["Rotate"].asString();
  182. if(!transcodeOutputNode["VideoStreamMap"].isNull())
  183. jobListObject.transcodeOutput.videoStreamMap = transcodeOutputNode["VideoStreamMap"].asString();
  184. if(!transcodeOutputNode["AudioStreamMap"].isNull())
  185. jobListObject.transcodeOutput.audioStreamMap = transcodeOutputNode["AudioStreamMap"].asString();
  186. if(!transcodeOutputNode["DeWatermark"].isNull())
  187. jobListObject.transcodeOutput.deWatermark = transcodeOutputNode["DeWatermark"].asString();
  188. if(!transcodeOutputNode["Priority"].isNull())
  189. jobListObject.transcodeOutput.priority = transcodeOutputNode["Priority"].asString();
  190. if(!transcodeOutputNode["WaterMarkConfigUrl"].isNull())
  191. jobListObject.transcodeOutput.waterMarkConfigUrl = transcodeOutputNode["WaterMarkConfigUrl"].asString();
  192. if(!transcodeOutputNode["MergeConfigUrl"].isNull())
  193. jobListObject.transcodeOutput.mergeConfigUrl = transcodeOutputNode["MergeConfigUrl"].asString();
  194. auto allWaterMarkList = value["WaterMarkList"]["WaterMark"];
  195. for (auto value : allWaterMarkList)
  196. {
  197. Job::TranscodeOutput::WaterMark waterMarkObject;
  198. if(!value["WaterMarkTemplateId"].isNull())
  199. waterMarkObject.waterMarkTemplateId = value["WaterMarkTemplateId"].asString();
  200. if(!value["Width"].isNull())
  201. waterMarkObject.width = value["Width"].asString();
  202. if(!value["Height"].isNull())
  203. waterMarkObject.height = value["Height"].asString();
  204. if(!value["Dx"].isNull())
  205. waterMarkObject.dx = value["Dx"].asString();
  206. if(!value["Dy"].isNull())
  207. waterMarkObject.dy = value["Dy"].asString();
  208. if(!value["ReferPos"].isNull())
  209. waterMarkObject.referPos = value["ReferPos"].asString();
  210. if(!value["Type"].isNull())
  211. waterMarkObject.type = value["Type"].asString();
  212. auto inputFile2Node = value["InputFile"];
  213. if(!inputFile2Node["Bucket"].isNull())
  214. waterMarkObject.inputFile2.bucket = inputFile2Node["Bucket"].asString();
  215. if(!inputFile2Node["Location"].isNull())
  216. waterMarkObject.inputFile2.location = inputFile2Node["Location"].asString();
  217. if(!inputFile2Node["Object"].isNull())
  218. waterMarkObject.inputFile2.object = inputFile2Node["Object"].asString();
  219. jobListObject.transcodeOutput.waterMarkList.push_back(waterMarkObject);
  220. }
  221. auto allMergeList = value["MergeList"]["Merge"];
  222. for (auto value : allMergeList)
  223. {
  224. Job::TranscodeOutput::Merge mergeObject;
  225. if(!value["MergeURL"].isNull())
  226. mergeObject.mergeURL = value["MergeURL"].asString();
  227. if(!value["Start"].isNull())
  228. mergeObject.start = value["Start"].asString();
  229. if(!value["Duration"].isNull())
  230. mergeObject.duration = value["Duration"].asString();
  231. if(!value["RoleArn"].isNull())
  232. mergeObject.roleArn = value["RoleArn"].asString();
  233. jobListObject.transcodeOutput.mergeList.push_back(mergeObject);
  234. }
  235. auto digiWaterMarkNode = transcodeOutputNode["DigiWaterMark"];
  236. if(!digiWaterMarkNode["Type"].isNull())
  237. jobListObject.transcodeOutput.digiWaterMark.type = digiWaterMarkNode["Type"].asString();
  238. if(!digiWaterMarkNode["Alpha"].isNull())
  239. jobListObject.transcodeOutput.digiWaterMark.alpha = digiWaterMarkNode["Alpha"].asString();
  240. auto inputFile3Node = digiWaterMarkNode["InputFile"];
  241. if(!inputFile3Node["Bucket"].isNull())
  242. jobListObject.transcodeOutput.digiWaterMark.inputFile3.bucket = inputFile3Node["Bucket"].asString();
  243. if(!inputFile3Node["Location"].isNull())
  244. jobListObject.transcodeOutput.digiWaterMark.inputFile3.location = inputFile3Node["Location"].asString();
  245. if(!inputFile3Node["Object"].isNull())
  246. jobListObject.transcodeOutput.digiWaterMark.inputFile3.object = inputFile3Node["Object"].asString();
  247. auto outputFileNode = transcodeOutputNode["OutputFile"];
  248. if(!outputFileNode["Bucket"].isNull())
  249. jobListObject.transcodeOutput.outputFile.bucket = outputFileNode["Bucket"].asString();
  250. if(!outputFileNode["Location"].isNull())
  251. jobListObject.transcodeOutput.outputFile.location = outputFileNode["Location"].asString();
  252. if(!outputFileNode["Object"].isNull())
  253. jobListObject.transcodeOutput.outputFile.object = outputFileNode["Object"].asString();
  254. if(!outputFileNode["RoleArn"].isNull())
  255. jobListObject.transcodeOutput.outputFile.roleArn = outputFileNode["RoleArn"].asString();
  256. auto m3U8NonStandardSupportNode = transcodeOutputNode["M3U8NonStandardSupport"];
  257. auto tSNode = m3U8NonStandardSupportNode["TS"];
  258. if(!tSNode["Md5Support"].isNull())
  259. jobListObject.transcodeOutput.m3U8NonStandardSupport.tS.md5Support = tSNode["Md5Support"].asString() == "true";
  260. if(!tSNode["SizeSupport"].isNull())
  261. jobListObject.transcodeOutput.m3U8NonStandardSupport.tS.sizeSupport = tSNode["SizeSupport"].asString() == "true";
  262. auto propertiesNode = transcodeOutputNode["Properties"];
  263. if(!propertiesNode["Width"].isNull())
  264. jobListObject.transcodeOutput.properties.width = propertiesNode["Width"].asString();
  265. if(!propertiesNode["Height"].isNull())
  266. jobListObject.transcodeOutput.properties.height = propertiesNode["Height"].asString();
  267. if(!propertiesNode["Bitrate"].isNull())
  268. jobListObject.transcodeOutput.properties.bitrate = propertiesNode["Bitrate"].asString();
  269. if(!propertiesNode["Duration"].isNull())
  270. jobListObject.transcodeOutput.properties.duration = propertiesNode["Duration"].asString();
  271. if(!propertiesNode["Fps"].isNull())
  272. jobListObject.transcodeOutput.properties.fps = propertiesNode["Fps"].asString();
  273. if(!propertiesNode["FileSize"].isNull())
  274. jobListObject.transcodeOutput.properties.fileSize = propertiesNode["FileSize"].asString();
  275. if(!propertiesNode["FileFormat"].isNull())
  276. jobListObject.transcodeOutput.properties.fileFormat = propertiesNode["FileFormat"].asString();
  277. auto streamsNode = propertiesNode["Streams"];
  278. auto allVideoStreamList = value["VideoStreamList"]["VideoStream"];
  279. for (auto value : allVideoStreamList)
  280. {
  281. Job::TranscodeOutput::Properties::Streams::VideoStream videoStreamObject;
  282. if(!value["Index"].isNull())
  283. videoStreamObject.index = value["Index"].asString();
  284. if(!value["CodecName"].isNull())
  285. videoStreamObject.codecName = value["CodecName"].asString();
  286. if(!value["CodecLongName"].isNull())
  287. videoStreamObject.codecLongName = value["CodecLongName"].asString();
  288. if(!value["Profile"].isNull())
  289. videoStreamObject.profile = value["Profile"].asString();
  290. if(!value["CodecTimeBase"].isNull())
  291. videoStreamObject.codecTimeBase = value["CodecTimeBase"].asString();
  292. if(!value["CodecTagString"].isNull())
  293. videoStreamObject.codecTagString = value["CodecTagString"].asString();
  294. if(!value["CodecTag"].isNull())
  295. videoStreamObject.codecTag = value["CodecTag"].asString();
  296. if(!value["Width"].isNull())
  297. videoStreamObject.width = value["Width"].asString();
  298. if(!value["Height"].isNull())
  299. videoStreamObject.height = value["Height"].asString();
  300. if(!value["HasBFrames"].isNull())
  301. videoStreamObject.hasBFrames = value["HasBFrames"].asString();
  302. if(!value["Sar"].isNull())
  303. videoStreamObject.sar = value["Sar"].asString();
  304. if(!value["Dar"].isNull())
  305. videoStreamObject.dar = value["Dar"].asString();
  306. if(!value["PixFmt"].isNull())
  307. videoStreamObject.pixFmt = value["PixFmt"].asString();
  308. if(!value["Level"].isNull())
  309. videoStreamObject.level = value["Level"].asString();
  310. if(!value["Fps"].isNull())
  311. videoStreamObject.fps = value["Fps"].asString();
  312. if(!value["AvgFPS"].isNull())
  313. videoStreamObject.avgFPS = value["AvgFPS"].asString();
  314. if(!value["Timebase"].isNull())
  315. videoStreamObject.timebase = value["Timebase"].asString();
  316. if(!value["StartTime"].isNull())
  317. videoStreamObject.startTime = value["StartTime"].asString();
  318. if(!value["Duration"].isNull())
  319. videoStreamObject.duration = value["Duration"].asString();
  320. if(!value["Bitrate"].isNull())
  321. videoStreamObject.bitrate = value["Bitrate"].asString();
  322. if(!value["NumFrames"].isNull())
  323. videoStreamObject.numFrames = value["NumFrames"].asString();
  324. if(!value["Lang"].isNull())
  325. videoStreamObject.lang = value["Lang"].asString();
  326. auto networkCostNode = value["NetworkCost"];
  327. if(!networkCostNode["PreloadTime"].isNull())
  328. videoStreamObject.networkCost.preloadTime = networkCostNode["PreloadTime"].asString();
  329. if(!networkCostNode["CostBandwidth"].isNull())
  330. videoStreamObject.networkCost.costBandwidth = networkCostNode["CostBandwidth"].asString();
  331. if(!networkCostNode["AvgBitrate"].isNull())
  332. videoStreamObject.networkCost.avgBitrate = networkCostNode["AvgBitrate"].asString();
  333. jobListObject.transcodeOutput.properties.streams.videoStreamList.push_back(videoStreamObject);
  334. }
  335. auto allAudioStreamList = value["AudioStreamList"]["AudioStream"];
  336. for (auto value : allAudioStreamList)
  337. {
  338. Job::TranscodeOutput::Properties::Streams::AudioStream audioStreamObject;
  339. if(!value["Index"].isNull())
  340. audioStreamObject.index = value["Index"].asString();
  341. if(!value["CodecName"].isNull())
  342. audioStreamObject.codecName = value["CodecName"].asString();
  343. if(!value["CodecTimeBase"].isNull())
  344. audioStreamObject.codecTimeBase = value["CodecTimeBase"].asString();
  345. if(!value["CodecLongName"].isNull())
  346. audioStreamObject.codecLongName = value["CodecLongName"].asString();
  347. if(!value["CodecTagString"].isNull())
  348. audioStreamObject.codecTagString = value["CodecTagString"].asString();
  349. if(!value["CodecTag"].isNull())
  350. audioStreamObject.codecTag = value["CodecTag"].asString();
  351. if(!value["SampleFmt"].isNull())
  352. audioStreamObject.sampleFmt = value["SampleFmt"].asString();
  353. if(!value["Samplerate"].isNull())
  354. audioStreamObject.samplerate = value["Samplerate"].asString();
  355. if(!value["Channels"].isNull())
  356. audioStreamObject.channels = value["Channels"].asString();
  357. if(!value["ChannelLayout"].isNull())
  358. audioStreamObject.channelLayout = value["ChannelLayout"].asString();
  359. if(!value["Timebase"].isNull())
  360. audioStreamObject.timebase = value["Timebase"].asString();
  361. if(!value["StartTime"].isNull())
  362. audioStreamObject.startTime = value["StartTime"].asString();
  363. if(!value["Duration"].isNull())
  364. audioStreamObject.duration = value["Duration"].asString();
  365. if(!value["Bitrate"].isNull())
  366. audioStreamObject.bitrate = value["Bitrate"].asString();
  367. if(!value["NumFrames"].isNull())
  368. audioStreamObject.numFrames = value["NumFrames"].asString();
  369. if(!value["Lang"].isNull())
  370. audioStreamObject.lang = value["Lang"].asString();
  371. jobListObject.transcodeOutput.properties.streams.audioStreamList.push_back(audioStreamObject);
  372. }
  373. auto allSubtitleStreamList = value["SubtitleStreamList"]["SubtitleStream"];
  374. for (auto value : allSubtitleStreamList)
  375. {
  376. Job::TranscodeOutput::Properties::Streams::SubtitleStream subtitleStreamObject;
  377. if(!value["Index"].isNull())
  378. subtitleStreamObject.index = value["Index"].asString();
  379. if(!value["Lang"].isNull())
  380. subtitleStreamObject.lang = value["Lang"].asString();
  381. jobListObject.transcodeOutput.properties.streams.subtitleStreamList.push_back(subtitleStreamObject);
  382. }
  383. auto formatNode = propertiesNode["Format"];
  384. if(!formatNode["NumStreams"].isNull())
  385. jobListObject.transcodeOutput.properties.format.numStreams = formatNode["NumStreams"].asString();
  386. if(!formatNode["NumPrograms"].isNull())
  387. jobListObject.transcodeOutput.properties.format.numPrograms = formatNode["NumPrograms"].asString();
  388. if(!formatNode["FormatName"].isNull())
  389. jobListObject.transcodeOutput.properties.format.formatName = formatNode["FormatName"].asString();
  390. if(!formatNode["FormatLongName"].isNull())
  391. jobListObject.transcodeOutput.properties.format.formatLongName = formatNode["FormatLongName"].asString();
  392. if(!formatNode["StartTime"].isNull())
  393. jobListObject.transcodeOutput.properties.format.startTime = formatNode["StartTime"].asString();
  394. if(!formatNode["Duration"].isNull())
  395. jobListObject.transcodeOutput.properties.format.duration = formatNode["Duration"].asString();
  396. if(!formatNode["Size"].isNull())
  397. jobListObject.transcodeOutput.properties.format.size = formatNode["Size"].asString();
  398. if(!formatNode["Bitrate"].isNull())
  399. jobListObject.transcodeOutput.properties.format.bitrate = formatNode["Bitrate"].asString();
  400. auto clip4Node = transcodeOutputNode["Clip"];
  401. auto timeSpanNode = clip4Node["TimeSpan"];
  402. if(!timeSpanNode["Seek"].isNull())
  403. jobListObject.transcodeOutput.clip4.timeSpan.seek = timeSpanNode["Seek"].asString();
  404. if(!timeSpanNode["Duration"].isNull())
  405. jobListObject.transcodeOutput.clip4.timeSpan.duration = timeSpanNode["Duration"].asString();
  406. auto superResoNode = transcodeOutputNode["SuperReso"];
  407. if(!superResoNode["IsHalfSample"].isNull())
  408. jobListObject.transcodeOutput.superReso.isHalfSample = superResoNode["IsHalfSample"].asString();
  409. auto subtitleConfigNode = transcodeOutputNode["SubtitleConfig"];
  410. auto allSubtitleList = value["SubtitleList"]["Subtitle"];
  411. for (auto value : allSubtitleList)
  412. {
  413. Job::TranscodeOutput::SubtitleConfig::Subtitle subtitleObject;
  414. if(!value["Map"].isNull())
  415. subtitleObject.map = value["Map"].asString();
  416. jobListObject.transcodeOutput.subtitleConfig.subtitleList.push_back(subtitleObject);
  417. }
  418. auto allExtSubtitleList = value["ExtSubtitleList"]["ExtSubtitle"];
  419. for (auto value : allExtSubtitleList)
  420. {
  421. Job::TranscodeOutput::SubtitleConfig::ExtSubtitle extSubtitleObject;
  422. if(!value["FontName"].isNull())
  423. extSubtitleObject.fontName = value["FontName"].asString();
  424. if(!value["CharEnc"].isNull())
  425. extSubtitleObject.charEnc = value["CharEnc"].asString();
  426. auto inputNode = value["Input"];
  427. if(!inputNode["Bucket"].isNull())
  428. extSubtitleObject.input.bucket = inputNode["Bucket"].asString();
  429. if(!inputNode["Location"].isNull())
  430. extSubtitleObject.input.location = inputNode["Location"].asString();
  431. if(!inputNode["Object"].isNull())
  432. extSubtitleObject.input.object = inputNode["Object"].asString();
  433. jobListObject.transcodeOutput.subtitleConfig.extSubtitleList.push_back(extSubtitleObject);
  434. }
  435. auto transConfigNode = transcodeOutputNode["TransConfig"];
  436. if(!transConfigNode["TransMode"].isNull())
  437. jobListObject.transcodeOutput.transConfig.transMode = transConfigNode["TransMode"].asString();
  438. if(!transConfigNode["IsCheckReso"].isNull())
  439. jobListObject.transcodeOutput.transConfig.isCheckReso = transConfigNode["IsCheckReso"].asString();
  440. if(!transConfigNode["IsCheckResoFail"].isNull())
  441. jobListObject.transcodeOutput.transConfig.isCheckResoFail = transConfigNode["IsCheckResoFail"].asString();
  442. if(!transConfigNode["IsCheckVideoBitrate"].isNull())
  443. jobListObject.transcodeOutput.transConfig.isCheckVideoBitrate = transConfigNode["IsCheckVideoBitrate"].asString();
  444. if(!transConfigNode["IsCheckAudioBitrate"].isNull())
  445. jobListObject.transcodeOutput.transConfig.isCheckAudioBitrate = transConfigNode["IsCheckAudioBitrate"].asString();
  446. if(!transConfigNode["AdjDarMethod"].isNull())
  447. jobListObject.transcodeOutput.transConfig.adjDarMethod = transConfigNode["AdjDarMethod"].asString();
  448. if(!transConfigNode["IsCheckVideoBitrateFail"].isNull())
  449. jobListObject.transcodeOutput.transConfig.isCheckVideoBitrateFail = transConfigNode["IsCheckVideoBitrateFail"].asString();
  450. if(!transConfigNode["IsCheckAudioBitrateFail"].isNull())
  451. jobListObject.transcodeOutput.transConfig.isCheckAudioBitrateFail = transConfigNode["IsCheckAudioBitrateFail"].asString();
  452. if(!transConfigNode["Duration"].isNull())
  453. jobListObject.transcodeOutput.transConfig.duration = transConfigNode["Duration"].asString();
  454. auto muxConfigNode = transcodeOutputNode["MuxConfig"];
  455. auto segmentNode = muxConfigNode["Segment"];
  456. if(!segmentNode["Duration"].isNull())
  457. jobListObject.transcodeOutput.muxConfig.segment.duration = segmentNode["Duration"].asString();
  458. auto gifNode = muxConfigNode["Gif"];
  459. if(!gifNode["Loop"].isNull())
  460. jobListObject.transcodeOutput.muxConfig.gif.loop = gifNode["Loop"].asString();
  461. if(!gifNode["FinalDelay"].isNull())
  462. jobListObject.transcodeOutput.muxConfig.gif.finalDelay = gifNode["FinalDelay"].asString();
  463. if(!gifNode["IsCustomPalette"].isNull())
  464. jobListObject.transcodeOutput.muxConfig.gif.isCustomPalette = gifNode["IsCustomPalette"].asString();
  465. if(!gifNode["DitherMode"].isNull())
  466. jobListObject.transcodeOutput.muxConfig.gif.ditherMode = gifNode["DitherMode"].asString();
  467. auto audioNode = transcodeOutputNode["Audio"];
  468. if(!audioNode["Codec"].isNull())
  469. jobListObject.transcodeOutput.audio.codec = audioNode["Codec"].asString();
  470. if(!audioNode["Profile"].isNull())
  471. jobListObject.transcodeOutput.audio.profile = audioNode["Profile"].asString();
  472. if(!audioNode["Samplerate"].isNull())
  473. jobListObject.transcodeOutput.audio.samplerate = audioNode["Samplerate"].asString();
  474. if(!audioNode["Bitrate"].isNull())
  475. jobListObject.transcodeOutput.audio.bitrate = audioNode["Bitrate"].asString();
  476. if(!audioNode["Channels"].isNull())
  477. jobListObject.transcodeOutput.audio.channels = audioNode["Channels"].asString();
  478. if(!audioNode["Qscale"].isNull())
  479. jobListObject.transcodeOutput.audio.qscale = audioNode["Qscale"].asString();
  480. auto volumeNode = audioNode["Volume"];
  481. if(!volumeNode["Level"].isNull())
  482. jobListObject.transcodeOutput.audio.volume.level = volumeNode["Level"].asString();
  483. if(!volumeNode["Method"].isNull())
  484. jobListObject.transcodeOutput.audio.volume.method = volumeNode["Method"].asString();
  485. auto videoNode = transcodeOutputNode["Video"];
  486. if(!videoNode["Codec"].isNull())
  487. jobListObject.transcodeOutput.video.codec = videoNode["Codec"].asString();
  488. if(!videoNode["Profile"].isNull())
  489. jobListObject.transcodeOutput.video.profile = videoNode["Profile"].asString();
  490. if(!videoNode["Bitrate"].isNull())
  491. jobListObject.transcodeOutput.video.bitrate = videoNode["Bitrate"].asString();
  492. if(!videoNode["Crf"].isNull())
  493. jobListObject.transcodeOutput.video.crf = videoNode["Crf"].asString();
  494. if(!videoNode["Width"].isNull())
  495. jobListObject.transcodeOutput.video.width = videoNode["Width"].asString();
  496. if(!videoNode["Height"].isNull())
  497. jobListObject.transcodeOutput.video.height = videoNode["Height"].asString();
  498. if(!videoNode["Fps"].isNull())
  499. jobListObject.transcodeOutput.video.fps = videoNode["Fps"].asString();
  500. if(!videoNode["Gop"].isNull())
  501. jobListObject.transcodeOutput.video.gop = videoNode["Gop"].asString();
  502. if(!videoNode["Preset"].isNull())
  503. jobListObject.transcodeOutput.video.preset = videoNode["Preset"].asString();
  504. if(!videoNode["ScanMode"].isNull())
  505. jobListObject.transcodeOutput.video.scanMode = videoNode["ScanMode"].asString();
  506. if(!videoNode["Bufsize"].isNull())
  507. jobListObject.transcodeOutput.video.bufsize = videoNode["Bufsize"].asString();
  508. if(!videoNode["Maxrate"].isNull())
  509. jobListObject.transcodeOutput.video.maxrate = videoNode["Maxrate"].asString();
  510. if(!videoNode["PixFmt"].isNull())
  511. jobListObject.transcodeOutput.video.pixFmt = videoNode["PixFmt"].asString();
  512. if(!videoNode["Degrain"].isNull())
  513. jobListObject.transcodeOutput.video.degrain = videoNode["Degrain"].asString();
  514. if(!videoNode["Qscale"].isNull())
  515. jobListObject.transcodeOutput.video.qscale = videoNode["Qscale"].asString();
  516. if(!videoNode["Crop"].isNull())
  517. jobListObject.transcodeOutput.video.crop = videoNode["Crop"].asString();
  518. if(!videoNode["Pad"].isNull())
  519. jobListObject.transcodeOutput.video.pad = videoNode["Pad"].asString();
  520. if(!videoNode["MaxFps"].isNull())
  521. jobListObject.transcodeOutput.video.maxFps = videoNode["MaxFps"].asString();
  522. auto bitrateBndNode = videoNode["BitrateBnd"];
  523. if(!bitrateBndNode["Max"].isNull())
  524. jobListObject.transcodeOutput.video.bitrateBnd.max = bitrateBndNode["Max"].asString();
  525. if(!bitrateBndNode["Min"].isNull())
  526. jobListObject.transcodeOutput.video.bitrateBnd.min = bitrateBndNode["Min"].asString();
  527. auto containerNode = transcodeOutputNode["Container"];
  528. if(!containerNode["Format"].isNull())
  529. jobListObject.transcodeOutput.container.format = containerNode["Format"].asString();
  530. auto encryptionNode = transcodeOutputNode["Encryption"];
  531. if(!encryptionNode["Type"].isNull())
  532. jobListObject.transcodeOutput.encryption.type = encryptionNode["Type"].asString();
  533. if(!encryptionNode["Id"].isNull())
  534. jobListObject.transcodeOutput.encryption.id = encryptionNode["Id"].asString();
  535. if(!encryptionNode["Key"].isNull())
  536. jobListObject.transcodeOutput.encryption.key = encryptionNode["Key"].asString();
  537. if(!encryptionNode["KeyUri"].isNull())
  538. jobListObject.transcodeOutput.encryption.keyUri = encryptionNode["KeyUri"].asString();
  539. if(!encryptionNode["KeyType"].isNull())
  540. jobListObject.transcodeOutput.encryption.keyType = encryptionNode["KeyType"].asString();
  541. if(!encryptionNode["SkipCnt"].isNull())
  542. jobListObject.transcodeOutput.encryption.skipCnt = encryptionNode["SkipCnt"].asString();
  543. auto mNSMessageResultNode = value["MNSMessageResult"];
  544. if(!mNSMessageResultNode["MessageId"].isNull())
  545. jobListObject.mNSMessageResult.messageId = mNSMessageResultNode["MessageId"].asString();
  546. if(!mNSMessageResultNode["ErrorMessage"].isNull())
  547. jobListObject.mNSMessageResult.errorMessage = mNSMessageResultNode["ErrorMessage"].asString();
  548. if(!mNSMessageResultNode["ErrorCode"].isNull())
  549. jobListObject.mNSMessageResult.errorCode = mNSMessageResultNode["ErrorCode"].asString();
  550. jobList_.push_back(jobListObject);
  551. }
  552. auto allNonExistJobIds = value["NonExistJobIds"]["String"];
  553. for (const auto &item : allNonExistJobIds)
  554. nonExistJobIds_.push_back(item.asString());
  555. }
  556. std::vector<std::string> QueryComplexJobListResult::getNonExistJobIds()const
  557. {
  558. return nonExistJobIds_;
  559. }
  560. std::vector<QueryComplexJobListResult::Job> QueryComplexJobListResult::getJobList()const
  561. {
  562. return jobList_;
  563. }