diff --git a/VERSION b/VERSION index 4b13f1137..13dd692f8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.36.1935 \ No newline at end of file +1.36.1936 \ No newline at end of file diff --git a/live/CMakeLists.txt b/live/CMakeLists.txt index f0ee500a7..f7b6cd240 100644 --- a/live/CMakeLists.txt +++ b/live/CMakeLists.txt @@ -641,6 +641,8 @@ set(live_public_header_model include/alibabacloud/live/model/ListPlaylistItemsResult.h include/alibabacloud/live/model/ListRtcMPUEventSubRecordRequest.h include/alibabacloud/live/model/ListRtcMPUEventSubRecordResult.h + include/alibabacloud/live/model/ListRtcMPUTaskDetailRequest.h + include/alibabacloud/live/model/ListRtcMPUTaskDetailResult.h include/alibabacloud/live/model/MiguLivePullToPushStartRequest.h include/alibabacloud/live/model/MiguLivePullToPushStartResult.h include/alibabacloud/live/model/MiguLivePullToPushStatusRequest.h @@ -1464,6 +1466,8 @@ set(live_src src/model/ListPlaylistItemsResult.cc src/model/ListRtcMPUEventSubRecordRequest.cc src/model/ListRtcMPUEventSubRecordResult.cc + src/model/ListRtcMPUTaskDetailRequest.cc + src/model/ListRtcMPUTaskDetailResult.cc src/model/MiguLivePullToPushStartRequest.cc src/model/MiguLivePullToPushStartResult.cc src/model/MiguLivePullToPushStatusRequest.cc diff --git a/live/include/alibabacloud/live/LiveClient.h b/live/include/alibabacloud/live/LiveClient.h index a708b5a32..1f3ff0029 100644 --- a/live/include/alibabacloud/live/LiveClient.h +++ b/live/include/alibabacloud/live/LiveClient.h @@ -642,6 +642,8 @@ #include "model/ListPlaylistItemsResult.h" #include "model/ListRtcMPUEventSubRecordRequest.h" #include "model/ListRtcMPUEventSubRecordResult.h" +#include "model/ListRtcMPUTaskDetailRequest.h" +#include "model/ListRtcMPUTaskDetailResult.h" #include "model/MiguLivePullToPushStartRequest.h" #include "model/MiguLivePullToPushStartResult.h" #include "model/MiguLivePullToPushStatusRequest.h" @@ -1781,6 +1783,9 @@ namespace AlibabaCloud typedef Outcome ListRtcMPUEventSubRecordOutcome; typedef std::future ListRtcMPUEventSubRecordOutcomeCallable; typedef std::function&)> ListRtcMPUEventSubRecordAsyncHandler; + typedef Outcome ListRtcMPUTaskDetailOutcome; + typedef std::future ListRtcMPUTaskDetailOutcomeCallable; + typedef std::function&)> ListRtcMPUTaskDetailAsyncHandler; typedef Outcome MiguLivePullToPushStartOutcome; typedef std::future MiguLivePullToPushStartOutcomeCallable; typedef std::function&)> MiguLivePullToPushStartAsyncHandler; @@ -3016,6 +3021,9 @@ namespace AlibabaCloud ListRtcMPUEventSubRecordOutcome listRtcMPUEventSubRecord(const Model::ListRtcMPUEventSubRecordRequest &request)const; void listRtcMPUEventSubRecordAsync(const Model::ListRtcMPUEventSubRecordRequest& request, const ListRtcMPUEventSubRecordAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; ListRtcMPUEventSubRecordOutcomeCallable listRtcMPUEventSubRecordCallable(const Model::ListRtcMPUEventSubRecordRequest& request) const; + ListRtcMPUTaskDetailOutcome listRtcMPUTaskDetail(const Model::ListRtcMPUTaskDetailRequest &request)const; + void listRtcMPUTaskDetailAsync(const Model::ListRtcMPUTaskDetailRequest& request, const ListRtcMPUTaskDetailAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; + ListRtcMPUTaskDetailOutcomeCallable listRtcMPUTaskDetailCallable(const Model::ListRtcMPUTaskDetailRequest& request) const; MiguLivePullToPushStartOutcome miguLivePullToPushStart(const Model::MiguLivePullToPushStartRequest &request)const; void miguLivePullToPushStartAsync(const Model::MiguLivePullToPushStartRequest& request, const MiguLivePullToPushStartAsyncHandler& handler, const std::shared_ptr& context = nullptr) const; MiguLivePullToPushStartOutcomeCallable miguLivePullToPushStartCallable(const Model::MiguLivePullToPushStartRequest& request) const; diff --git a/live/include/alibabacloud/live/model/ListRtcMPUTaskDetailRequest.h b/live/include/alibabacloud/live/model/ListRtcMPUTaskDetailRequest.h new file mode 100644 index 000000000..c4fd04427 --- /dev/null +++ b/live/include/alibabacloud/live/model/ListRtcMPUTaskDetailRequest.h @@ -0,0 +1,51 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALIBABACLOUD_LIVE_MODEL_LISTRTCMPUTASKDETAILREQUEST_H_ +#define ALIBABACLOUD_LIVE_MODEL_LISTRTCMPUTASKDETAILREQUEST_H_ + +#include +#include +#include +#include +#include + +namespace AlibabaCloud { +namespace Live { +namespace Model { +class ALIBABACLOUD_LIVE_EXPORT ListRtcMPUTaskDetailRequest : public RpcServiceRequest { +public: + ListRtcMPUTaskDetailRequest(); + ~ListRtcMPUTaskDetailRequest(); + long getPageNo() const; + void setPageNo(long pageNo); + std::string getAppId() const; + void setAppId(const std::string &appId); + long getPageSize() const; + void setPageSize(long pageSize); + std::string getTaskId() const; + void setTaskId(const std::string &taskId); + +private: + long pageNo_; + std::string appId_; + long pageSize_; + std::string taskId_; +}; +} // namespace Model +} // namespace Live +} // namespace AlibabaCloud +#endif // !ALIBABACLOUD_LIVE_MODEL_LISTRTCMPUTASKDETAILREQUEST_H_ diff --git a/live/include/alibabacloud/live/model/ListRtcMPUTaskDetailResult.h b/live/include/alibabacloud/live/model/ListRtcMPUTaskDetailResult.h new file mode 100644 index 000000000..3d8089d94 --- /dev/null +++ b/live/include/alibabacloud/live/model/ListRtcMPUTaskDetailResult.h @@ -0,0 +1,147 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef ALIBABACLOUD_LIVE_MODEL_LISTRTCMPUTASKDETAILRESULT_H_ +#define ALIBABACLOUD_LIVE_MODEL_LISTRTCMPUTASKDETAILRESULT_H_ + +#include +#include +#include +#include +#include + +namespace AlibabaCloud +{ + namespace Live + { + namespace Model + { + class ALIBABACLOUD_LIVE_EXPORT ListRtcMPUTaskDetailResult : public ServiceResult + { + public: + struct MpuTask + { + struct SingleSubParams + { + std::string streamType; + std::string userId; + std::string sourceType; + }; + struct TranscodeParams + { + struct Background + { + std::string renderMode; + std::string uRL; + }; + struct EncodeParams + { + std::string audioSampleRate; + std::string audioBitrate; + std::string audioChannels; + std::string videoHeight; + std::string audioOnly; + std::string videoFramerate; + std::string videoWidth; + std::string videoGop; + std::string enhancedParam; + std::string videoCodec; + std::string videoBitrate; + }; + struct Layout + { + struct MaxVideoUser + { + std::string streamType; + std::string userId; + std::string sourceType; + }; + struct UserPane + { + struct UserInfo1 + { + std::string userId; + std::string sourceType; + }; + std::string backgroundImageUrl; + std::string renderMode; + std::string zOrder; + std::string x; + std::string y; + std::string height; + std::string width; + UserInfo1 userInfo1; + }; + std::vector userPanes; + std::string layoutMode; + MaxVideoUser maxVideoUser; + }; + struct UserInfo + { + std::string streamType; + std::string userId; + std::string sourceType; + }; + Background background; + Layout layout; + EncodeParams encodeParams; + std::vector userInfos; + }; + struct SeiParams + { + struct LayoutVolume + { + std::string followIdr; + std::string interval; + }; + struct PassThrough + { + std::string payloadContentKey; + std::string payloadContent; + std::string followIdr; + std::string interval; + }; + LayoutVolume layoutVolume; + PassThrough passThrough; + std::string payloadType; + }; + std::string taskId; + std::string mixMode; + std::string appId; + SeiParams seiParams; + std::string region; + SingleSubParams singleSubParams; + TranscodeParams transcodeParams; + std::string channelId; + std::string streamURL; + }; + + + ListRtcMPUTaskDetailResult(); + explicit ListRtcMPUTaskDetailResult(const std::string &payload); + ~ListRtcMPUTaskDetailResult(); + std::vector getMPUTasks()const; + + protected: + void parse(const std::string &payload); + private: + std::vector mPUTasks_; + + }; + } + } +} +#endif // !ALIBABACLOUD_LIVE_MODEL_LISTRTCMPUTASKDETAILRESULT_H_ \ No newline at end of file diff --git a/live/src/LiveClient.cc b/live/src/LiveClient.cc index 48a87a850..3ded0474c 100644 --- a/live/src/LiveClient.cc +++ b/live/src/LiveClient.cc @@ -11211,6 +11211,42 @@ LiveClient::ListRtcMPUEventSubRecordOutcomeCallable LiveClient::listRtcMPUEventS return task->get_future(); } +LiveClient::ListRtcMPUTaskDetailOutcome LiveClient::listRtcMPUTaskDetail(const ListRtcMPUTaskDetailRequest &request) const +{ + auto endpointOutcome = endpointProvider_->getEndpoint(); + if (!endpointOutcome.isSuccess()) + return ListRtcMPUTaskDetailOutcome(endpointOutcome.error()); + + auto outcome = makeRequest(endpointOutcome.result(), request); + + if (outcome.isSuccess()) + return ListRtcMPUTaskDetailOutcome(ListRtcMPUTaskDetailResult(outcome.result())); + else + return ListRtcMPUTaskDetailOutcome(outcome.error()); +} + +void LiveClient::listRtcMPUTaskDetailAsync(const ListRtcMPUTaskDetailRequest& request, const ListRtcMPUTaskDetailAsyncHandler& handler, const std::shared_ptr& context) const +{ + auto fn = [this, request, handler, context]() + { + handler(this, request, listRtcMPUTaskDetail(request), context); + }; + + asyncExecute(new Runnable(fn)); +} + +LiveClient::ListRtcMPUTaskDetailOutcomeCallable LiveClient::listRtcMPUTaskDetailCallable(const ListRtcMPUTaskDetailRequest &request) const +{ + auto task = std::make_shared>( + [this, request]() + { + return this->listRtcMPUTaskDetail(request); + }); + + asyncExecute(new Runnable([task]() { (*task)(); })); + return task->get_future(); +} + LiveClient::MiguLivePullToPushStartOutcome LiveClient::miguLivePullToPushStart(const MiguLivePullToPushStartRequest &request) const { auto endpointOutcome = endpointProvider_->getEndpoint(); diff --git a/live/src/model/ListRtcMPUTaskDetailRequest.cc b/live/src/model/ListRtcMPUTaskDetailRequest.cc new file mode 100644 index 000000000..b323978d8 --- /dev/null +++ b/live/src/model/ListRtcMPUTaskDetailRequest.cc @@ -0,0 +1,63 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include + +using AlibabaCloud::Live::Model::ListRtcMPUTaskDetailRequest; + +ListRtcMPUTaskDetailRequest::ListRtcMPUTaskDetailRequest() + : RpcServiceRequest("live", "2016-11-01", "ListRtcMPUTaskDetail") { + setMethod(HttpRequest::Method::Post); +} + +ListRtcMPUTaskDetailRequest::~ListRtcMPUTaskDetailRequest() {} + +long ListRtcMPUTaskDetailRequest::getPageNo() const { + return pageNo_; +} + +void ListRtcMPUTaskDetailRequest::setPageNo(long pageNo) { + pageNo_ = pageNo; + setParameter(std::string("PageNo"), std::to_string(pageNo)); +} + +std::string ListRtcMPUTaskDetailRequest::getAppId() const { + return appId_; +} + +void ListRtcMPUTaskDetailRequest::setAppId(const std::string &appId) { + appId_ = appId; + setParameter(std::string("AppId"), appId); +} + +long ListRtcMPUTaskDetailRequest::getPageSize() const { + return pageSize_; +} + +void ListRtcMPUTaskDetailRequest::setPageSize(long pageSize) { + pageSize_ = pageSize; + setParameter(std::string("PageSize"), std::to_string(pageSize)); +} + +std::string ListRtcMPUTaskDetailRequest::getTaskId() const { + return taskId_; +} + +void ListRtcMPUTaskDetailRequest::setTaskId(const std::string &taskId) { + taskId_ = taskId; + setParameter(std::string("TaskId"), taskId); +} + diff --git a/live/src/model/ListRtcMPUTaskDetailResult.cc b/live/src/model/ListRtcMPUTaskDetailResult.cc new file mode 100644 index 000000000..d934d69d1 --- /dev/null +++ b/live/src/model/ListRtcMPUTaskDetailResult.cc @@ -0,0 +1,167 @@ +/* + * Copyright 2009-2017 Alibaba Cloud All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include +#include + +using namespace AlibabaCloud::Live; +using namespace AlibabaCloud::Live::Model; + +ListRtcMPUTaskDetailResult::ListRtcMPUTaskDetailResult() : + ServiceResult() +{} + +ListRtcMPUTaskDetailResult::ListRtcMPUTaskDetailResult(const std::string &payload) : + ServiceResult() +{ + parse(payload); +} + +ListRtcMPUTaskDetailResult::~ListRtcMPUTaskDetailResult() +{} + +void ListRtcMPUTaskDetailResult::parse(const std::string &payload) +{ + Json::Reader reader; + Json::Value value; + reader.parse(payload, value); + setRequestId(value["RequestId"].asString()); + auto allMPUTasksNode = value["MPUTasks"]["mpuTask"]; + for (auto valueMPUTasksmpuTask : allMPUTasksNode) + { + MpuTask mPUTasksObject; + if(!valueMPUTasksmpuTask["AppId"].isNull()) + mPUTasksObject.appId = valueMPUTasksmpuTask["AppId"].asString(); + if(!valueMPUTasksmpuTask["ChannelId"].isNull()) + mPUTasksObject.channelId = valueMPUTasksmpuTask["ChannelId"].asString(); + if(!valueMPUTasksmpuTask["TaskId"].isNull()) + mPUTasksObject.taskId = valueMPUTasksmpuTask["TaskId"].asString(); + if(!valueMPUTasksmpuTask["MixMode"].isNull()) + mPUTasksObject.mixMode = valueMPUTasksmpuTask["MixMode"].asString(); + if(!valueMPUTasksmpuTask["StreamURL"].isNull()) + mPUTasksObject.streamURL = valueMPUTasksmpuTask["StreamURL"].asString(); + if(!valueMPUTasksmpuTask["Region"].isNull()) + mPUTasksObject.region = valueMPUTasksmpuTask["Region"].asString(); + auto singleSubParamsNode = value["SingleSubParams"]; + if(!singleSubParamsNode["SourceType"].isNull()) + mPUTasksObject.singleSubParams.sourceType = singleSubParamsNode["SourceType"].asString(); + if(!singleSubParamsNode["StreamType"].isNull()) + mPUTasksObject.singleSubParams.streamType = singleSubParamsNode["StreamType"].asString(); + if(!singleSubParamsNode["UserId"].isNull()) + mPUTasksObject.singleSubParams.userId = singleSubParamsNode["UserId"].asString(); + auto transcodeParamsNode = value["TranscodeParams"]; + auto allUserInfosNode = transcodeParamsNode["UserInfos"]["UserInfo"]; + for (auto transcodeParamsNodeUserInfosUserInfo : allUserInfosNode) + { + MpuTask::TranscodeParams::UserInfo userInfoObject; + if(!transcodeParamsNodeUserInfosUserInfo["UserId"].isNull()) + userInfoObject.userId = transcodeParamsNodeUserInfosUserInfo["UserId"].asString(); + if(!transcodeParamsNodeUserInfosUserInfo["SourceType"].isNull()) + userInfoObject.sourceType = transcodeParamsNodeUserInfosUserInfo["SourceType"].asString(); + if(!transcodeParamsNodeUserInfosUserInfo["StreamType"].isNull()) + userInfoObject.streamType = transcodeParamsNodeUserInfosUserInfo["StreamType"].asString(); + mPUTasksObject.transcodeParams.userInfos.push_back(userInfoObject); + } + auto backgroundNode = transcodeParamsNode["Background"]; + if(!backgroundNode["RenderMode"].isNull()) + mPUTasksObject.transcodeParams.background.renderMode = backgroundNode["RenderMode"].asString(); + if(!backgroundNode["URL"].isNull()) + mPUTasksObject.transcodeParams.background.uRL = backgroundNode["URL"].asString(); + auto encodeParamsNode = transcodeParamsNode["EncodeParams"]; + if(!encodeParamsNode["AudioOnly"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.audioOnly = encodeParamsNode["AudioOnly"].asString(); + if(!encodeParamsNode["AudioBitrate"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.audioBitrate = encodeParamsNode["AudioBitrate"].asString(); + if(!encodeParamsNode["AudioChannels"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.audioChannels = encodeParamsNode["AudioChannels"].asString(); + if(!encodeParamsNode["AudioSampleRate"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.audioSampleRate = encodeParamsNode["AudioSampleRate"].asString(); + if(!encodeParamsNode["VideoCodec"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.videoCodec = encodeParamsNode["VideoCodec"].asString(); + if(!encodeParamsNode["VideoBitrate"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.videoBitrate = encodeParamsNode["VideoBitrate"].asString(); + if(!encodeParamsNode["VideoFramerate"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.videoFramerate = encodeParamsNode["VideoFramerate"].asString(); + if(!encodeParamsNode["VideoGop"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.videoGop = encodeParamsNode["VideoGop"].asString(); + if(!encodeParamsNode["VideoHeight"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.videoHeight = encodeParamsNode["VideoHeight"].asString(); + if(!encodeParamsNode["VideoWidth"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.videoWidth = encodeParamsNode["VideoWidth"].asString(); + if(!encodeParamsNode["EnhancedParam"].isNull()) + mPUTasksObject.transcodeParams.encodeParams.enhancedParam = encodeParamsNode["EnhancedParam"].asString(); + auto layoutNode = transcodeParamsNode["Layout"]; + if(!layoutNode["LayoutMode"].isNull()) + mPUTasksObject.transcodeParams.layout.layoutMode = layoutNode["LayoutMode"].asString(); + auto allUserPanesNode = layoutNode["UserPanes"]["UserPane"]; + for (auto layoutNodeUserPanesUserPane : allUserPanesNode) + { + MpuTask::TranscodeParams::Layout::UserPane userPaneObject; + if(!layoutNodeUserPanesUserPane["Height"].isNull()) + userPaneObject.height = layoutNodeUserPanesUserPane["Height"].asString(); + if(!layoutNodeUserPanesUserPane["Width"].isNull()) + userPaneObject.width = layoutNodeUserPanesUserPane["Width"].asString(); + if(!layoutNodeUserPanesUserPane["X"].isNull()) + userPaneObject.x = layoutNodeUserPanesUserPane["X"].asString(); + if(!layoutNodeUserPanesUserPane["Y"].isNull()) + userPaneObject.y = layoutNodeUserPanesUserPane["Y"].asString(); + if(!layoutNodeUserPanesUserPane["ZOrder"].isNull()) + userPaneObject.zOrder = layoutNodeUserPanesUserPane["ZOrder"].asString(); + if(!layoutNodeUserPanesUserPane["BackgroundImageUrl"].isNull()) + userPaneObject.backgroundImageUrl = layoutNodeUserPanesUserPane["BackgroundImageUrl"].asString(); + if(!layoutNodeUserPanesUserPane["RenderMode"].isNull()) + userPaneObject.renderMode = layoutNodeUserPanesUserPane["RenderMode"].asString(); + auto userInfo1Node = value["UserInfo"]; + if(!userInfo1Node["SourceType"].isNull()) + userPaneObject.userInfo1.sourceType = userInfo1Node["SourceType"].asString(); + if(!userInfo1Node["UserId"].isNull()) + userPaneObject.userInfo1.userId = userInfo1Node["UserId"].asString(); + mPUTasksObject.transcodeParams.layout.userPanes.push_back(userPaneObject); + } + auto maxVideoUserNode = layoutNode["MaxVideoUser"]; + if(!maxVideoUserNode["SourceType"].isNull()) + mPUTasksObject.transcodeParams.layout.maxVideoUser.sourceType = maxVideoUserNode["SourceType"].asString(); + if(!maxVideoUserNode["StreamType"].isNull()) + mPUTasksObject.transcodeParams.layout.maxVideoUser.streamType = maxVideoUserNode["StreamType"].asString(); + if(!maxVideoUserNode["UserId"].isNull()) + mPUTasksObject.transcodeParams.layout.maxVideoUser.userId = maxVideoUserNode["UserId"].asString(); + auto seiParamsNode = value["SeiParams"]; + if(!seiParamsNode["PayloadType"].isNull()) + mPUTasksObject.seiParams.payloadType = seiParamsNode["PayloadType"].asString(); + auto layoutVolumeNode = seiParamsNode["LayoutVolume"]; + if(!layoutVolumeNode["FollowIdr"].isNull()) + mPUTasksObject.seiParams.layoutVolume.followIdr = layoutVolumeNode["FollowIdr"].asString(); + if(!layoutVolumeNode["Interval"].isNull()) + mPUTasksObject.seiParams.layoutVolume.interval = layoutVolumeNode["Interval"].asString(); + auto passThroughNode = seiParamsNode["PassThrough"]; + if(!passThroughNode["FollowIdr"].isNull()) + mPUTasksObject.seiParams.passThrough.followIdr = passThroughNode["FollowIdr"].asString(); + if(!passThroughNode["Interval"].isNull()) + mPUTasksObject.seiParams.passThrough.interval = passThroughNode["Interval"].asString(); + if(!passThroughNode["PayloadContent"].isNull()) + mPUTasksObject.seiParams.passThrough.payloadContent = passThroughNode["PayloadContent"].asString(); + if(!passThroughNode["PayloadContentKey"].isNull()) + mPUTasksObject.seiParams.passThrough.payloadContentKey = passThroughNode["PayloadContentKey"].asString(); + mPUTasks_.push_back(mPUTasksObject); + } + +} + +std::vector ListRtcMPUTaskDetailResult::getMPUTasks()const +{ + return mPUTasks_; +} +