1 /*
2  * Copyright (c) 2024-2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include "video_resize_filter.h"
17 #include "filter/filter_factory.h"
18 #include "common/media_core.h"
19 
20 #ifdef USE_VIDEO_PROCESSING_ENGINE
21 #include "detail_enhancer_video.h"
22 #include "detail_enhancer_video_common.h"
23 #endif
24 
25 namespace {
26 constexpr OHOS::HiviewDFX::HiLogLabel LABEL = { LOG_ONLY_PRERELEASE, LOG_DOMAIN_SYSTEM_PLAYER, "VideoResizeFilter" };
27 }
28 
29 namespace OHOS {
30 namespace Media {
31 #ifdef USE_VIDEO_PROCESSING_ENGINE
32 using namespace VideoProcessingEngine;
33 constexpr int64_t VARIABLE_INCREMENT_INTERVAL = 1;
34 #endif
35 namespace Pipeline {
36 
37 static AutoRegisterFilter<VideoResizeFilter> g_registerVideoResizeFilter("builtin.transcoder.videoresize",
38     FilterType::FILTERTYPE_VIDRESIZE,
__anon92da5a210202(const std::string& name, const FilterType type) 39     [](const std::string& name, const FilterType type) {
40         return std::make_shared<VideoResizeFilter>(name, FilterType::FILTERTYPE_VIDRESIZE);
41     });
42 
43 class VideoResizeFilterLinkCallback : public FilterLinkCallback {
44 public:
VideoResizeFilterLinkCallback(std::shared_ptr<VideoResizeFilter> videoResizeFilter)45     explicit VideoResizeFilterLinkCallback(std::shared_ptr<VideoResizeFilter> videoResizeFilter)
46         : videoResizeFilter_(std::move(videoResizeFilter))
47     {
48     }
49 
50     ~VideoResizeFilterLinkCallback() = default;
51 
OnLinkedResult(const sptr<AVBufferQueueProducer> & queue,std::shared_ptr<Meta> & meta)52     void OnLinkedResult(const sptr<AVBufferQueueProducer> &queue, std::shared_ptr<Meta> &meta) override
53     {
54         if (auto resizeFilter = videoResizeFilter_.lock()) {
55             resizeFilter->OnLinkedResult(queue, meta);
56         } else {
57             MEDIA_LOG_I("invalid resizeFilter");
58         }
59     }
60 
OnUnlinkedResult(std::shared_ptr<Meta> & meta)61     void OnUnlinkedResult(std::shared_ptr<Meta> &meta) override
62     {
63         if (auto resizeFilter = videoResizeFilter_.lock()) {
64             resizeFilter->OnUnlinkedResult(meta);
65         } else {
66             MEDIA_LOG_I("invalid resizeFilter");
67         }
68     }
69 
OnUpdatedResult(std::shared_ptr<Meta> & meta)70     void OnUpdatedResult(std::shared_ptr<Meta> &meta) override
71     {
72         if (auto resizeFilter = videoResizeFilter_.lock()) {
73             resizeFilter->OnUpdatedResult(meta);
74         } else {
75             MEDIA_LOG_I("invalid resizeFilter");
76         }
77     }
78 private:
79     std::weak_ptr<VideoResizeFilter> videoResizeFilter_;
80 };
81 
82 #ifdef USE_VIDEO_PROCESSING_ENGINE
83 class ResizeDetailEnhancerVideoCallback : public DetailEnhancerVideoCallback {
84 public:
ResizeDetailEnhancerVideoCallback(std::shared_ptr<VideoResizeFilter> videoResizeFilter)85     explicit ResizeDetailEnhancerVideoCallback(std::shared_ptr<VideoResizeFilter> videoResizeFilter)
86         : videoResizeFilter_(std::move(videoResizeFilter))
87     {
88     }
89 
OnError(VPEAlgoErrCode errorCode)90     void OnError(VPEAlgoErrCode errorCode) override
91     {
92     }
93 
OnState(VPEAlgoState state)94     void OnState(VPEAlgoState state) override
95     {
96     }
97 
OnOutputBufferAvailable(uint32_t index,DetailEnhBufferFlag flag)98     void OnOutputBufferAvailable(uint32_t index, DetailEnhBufferFlag flag) override
99     {
100         if (auto videoResizeFilter = videoResizeFilter_.lock()) {
101             videoResizeFilter->OnOutputBufferAvailable(index, static_cast<uint32_t>(flag));
102             if (flag == DETAIL_ENH_BUFFER_FLAG_EOS) {
103                 videoResizeFilter->NotifyNextFilterEos();
104             }
105         } else {
106             MEDIA_LOG_I("invalid videoResizeFilter");
107         }
108     }
109 private:
110     std::weak_ptr<VideoResizeFilter> videoResizeFilter_;
111 };
112 #endif
113 
VideoResizeFilter(std::string name,FilterType type)114 VideoResizeFilter::VideoResizeFilter(std::string name, FilterType type): Filter(name, type)
115 {
116     filterType_ = type;
117     MEDIA_LOG_I("video resize filter create");
118 }
119 
~VideoResizeFilter()120 VideoResizeFilter::~VideoResizeFilter()
121 {
122     MEDIA_LOG_I("video resize filter destroy");
123 }
124 
SetCodecFormat(const std::shared_ptr<Meta> & format)125 Status VideoResizeFilter::SetCodecFormat(const std::shared_ptr<Meta> &format)
126 {
127     MEDIA_LOG_I("SetCodecFormat");
128     return Status::OK;
129 }
130 
Init(const std::shared_ptr<EventReceiver> & receiver,const std::shared_ptr<FilterCallback> & callback)131 void VideoResizeFilter::Init(const std::shared_ptr<EventReceiver> &receiver,
132     const std::shared_ptr<FilterCallback> &callback)
133 {
134     MEDIA_LOG_I("Init");
135     eventReceiver_ = receiver;
136     filterCallback_ = callback;
137 #ifdef USE_VIDEO_PROCESSING_ENGINE
138     videoEnhancer_ = DetailEnhancerVideo::Create();
139     if (videoEnhancer_ != nullptr) {
140         std::shared_ptr<DetailEnhancerVideoCallback> detailEnhancerVideoCallback =
141             std::make_shared<ResizeDetailEnhancerVideoCallback>(shared_from_this());
142         videoEnhancer_->RegisterCallback(detailEnhancerVideoCallback);
143     } else {
144         MEDIA_LOG_I("Init videoEnhancer fail");
145         if (eventReceiver_) {
146             eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
147         }
148         return;
149     }
150 #else
151     MEDIA_LOG_E("Init videoEnhancer fail, no VPE module");
152     if (eventReceiver_) {
153         eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
154     }
155     return;
156 #endif
157     if (!releaseBufferTask_) {
158         releaseBufferTask_ = std::make_shared<Task>("VideoResize");
159         releaseBufferTask_->RegisterJob([this] {
160             ReleaseBuffer();
161             return 0;
162         });
163     }
164 }
165 
Configure(const std::shared_ptr<Meta> & parameter)166 Status VideoResizeFilter::Configure(const std::shared_ptr<Meta> &parameter)
167 {
168     MEDIA_LOG_I("Configure");
169     configureParameter_ = parameter;
170 #ifdef USE_VIDEO_PROCESSING_ENGINE
171     if (videoEnhancer_ == nullptr) {
172         MEDIA_LOG_E("Configure videoEnhancer is null");
173         return Status::ERROR_NULL_POINTER;
174     }
175     const DetailEnhancerParameters parameter_ = {"", DetailEnhancerLevel::DETAIL_ENH_LEVEL_MEDIUM};
176     int32_t ret = videoEnhancer_->SetParameter(parameter_, SourceType::VIDEO);
177     if (ret != 0) {
178         MEDIA_LOG_E("videoEnhancer SetParameter fail");
179         if (eventReceiver_) {
180             eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
181         }
182         return Status::ERROR_UNKNOWN;
183     } else {
184         return Status::OK;
185     }
186 #else
187     MEDIA_LOG_E("no VPE module");
188     if (eventReceiver_) {
189         eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
190     }
191     return Status::ERROR_UNKNOWN;
192 #endif
193 }
194 
GetInputSurface()195 sptr<Surface> VideoResizeFilter::GetInputSurface()
196 {
197     MEDIA_LOG_I("GetInputSurface");
198 #ifdef USE_VIDEO_PROCESSING_ENGINE
199     if (videoEnhancer_ == nullptr) {
200         MEDIA_LOG_E("Configure videoEnhancer is null");
201         return nullptr;
202     }
203     sptr<Surface> inputSurface = videoEnhancer_->GetInputSurface();
204     return inputSurface;
205 #else
206     MEDIA_LOG_E("no VPE module");
207     if (eventReceiver_) {
208         eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
209     }
210     return nullptr;
211 #endif
212 }
213 
SetOutputSurface(sptr<Surface> surface,int32_t width,int32_t height)214 Status VideoResizeFilter::SetOutputSurface(sptr<Surface> surface, int32_t width, int32_t height)
215 {
216     MEDIA_LOG_I("SetOutputSurface");
217 #ifdef USE_VIDEO_PROCESSING_ENGINE
218     if (surface == nullptr) {
219         MEDIA_LOG_E("SetOutputSurface surface is null");
220         return Status::ERROR_NULL_POINTER;
221     } else {
222         surface->SetRequestWidthAndHeight(width, height);
223     }
224     if (videoEnhancer_ == nullptr) {
225         MEDIA_LOG_E("Configure videoEnhancer is null");
226         return Status::ERROR_NULL_POINTER;
227     }
228     int32_t ret = videoEnhancer_->SetOutputSurface(surface);
229     if (ret != 0) {
230         MEDIA_LOG_E("videoEnhancer SetOutputSurface fail");
231         if (eventReceiver_) {
232             eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
233         }
234         return Status::ERROR_UNKNOWN;
235     }
236     return Status::OK;
237 #else
238     MEDIA_LOG_E("no VPE module");
239     if (eventReceiver_) {
240         eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
241     }
242     return Status::ERROR_UNKNOWN;
243 #endif
244 }
245 
DoPrepare()246 Status VideoResizeFilter::DoPrepare()
247 {
248     MEDIA_LOG_I("Prepare");
249     if (filterCallback_ == nullptr) {
250         return Status::ERROR_UNKNOWN;
251     }
252     switch (filterType_) {
253         case FilterType::FILTERTYPE_VIDRESIZE:
254             filterCallback_->OnCallback(shared_from_this(), FilterCallBackCommand::NEXT_FILTER_NEEDED,
255                 StreamType::STREAMTYPE_RAW_VIDEO);
256             break;
257         default:
258             break;
259     }
260     return Status::OK;
261 }
262 
DoStart()263 Status VideoResizeFilter::DoStart()
264 {
265     MEDIA_LOG_I("Start");
266     isThreadExit_ = false;
267     if (releaseBufferTask_) {
268         releaseBufferTask_->Start();
269     }
270 #ifdef USE_VIDEO_PROCESSING_ENGINE
271     if (videoEnhancer_ == nullptr) {
272         MEDIA_LOG_E("DoStart videoEnhancer is null");
273         return Status::ERROR_NULL_POINTER;
274     }
275     int32_t ret = videoEnhancer_->Start();
276     if (ret != 0) {
277         MEDIA_LOG_E("videoEnhancer Start fail");
278         if (eventReceiver_) {
279             eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
280         }
281         return Status::ERROR_UNKNOWN;
282     }
283     return Status::OK;
284 #else
285     MEDIA_LOG_E("no VPE module");
286     if (eventReceiver_) {
287         eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
288     }
289     return Status::ERROR_UNKNOWN;
290 #endif
291 }
292 
DoPause()293 Status VideoResizeFilter::DoPause()
294 {
295     MEDIA_LOG_I("Pause");
296     return Status::OK;
297 }
298 
DoResume()299 Status VideoResizeFilter::DoResume()
300 {
301     MEDIA_LOG_I("Resume");
302     return Status::OK;
303 }
304 
DoStop()305 Status VideoResizeFilter::DoStop()
306 {
307     MEDIA_LOG_I("Stop");
308     if (releaseBufferTask_) {
309         isThreadExit_ = true;
310         releaseBufferCondition_.notify_all();
311         releaseBufferTask_->Stop();
312         MEDIA_LOG_I("releaseBufferTask_ Stop");
313     }
314 #ifdef USE_VIDEO_PROCESSING_ENGINE
315     if (!videoEnhancer_) {
316         return Status::OK;
317     }
318     int32_t ret = videoEnhancer_->Stop();
319     if (ret != 0) {
320         MEDIA_LOG_E("videoEnhancer Stop fail");
321         if (eventReceiver_) {
322             eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
323         }
324         return Status::ERROR_UNKNOWN;
325     }
326     return Status::OK;
327 #else
328     MEDIA_LOG_E("no VPE module");
329     if (eventReceiver_) {
330         eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
331     }
332     return Status::ERROR_UNKNOWN;
333 #endif
334 }
335 
DoFlush()336 Status VideoResizeFilter::DoFlush()
337 {
338     return Status::OK;
339 }
340 
DoRelease()341 Status VideoResizeFilter::DoRelease()
342 {
343     return Status::OK;
344 }
345 
NotifyNextFilterEos()346 Status VideoResizeFilter::NotifyNextFilterEos()
347 {
348     MEDIA_LOG_I("NotifyNextFilterEos");
349     for (auto iter : nextFiltersMap_) {
350         for (auto filter : iter.second) {
351             std::shared_ptr<Meta> eosMeta = std::make_shared<Meta>();
352             eosMeta->Set<Tag::MEDIA_END_OF_STREAM>(true);
353             eosMeta->Set<Tag::USER_FRAME_PTS>(eosPts_);
354             filter->SetParameter(eosMeta);
355         }
356     }
357     return Status::OK;
358 }
359 
SetParameter(const std::shared_ptr<Meta> & parameter)360 void VideoResizeFilter::SetParameter(const std::shared_ptr<Meta> &parameter)
361 {
362     MEDIA_LOG_I("SetParameter");
363     bool isEos = false;
364     if (parameter->Find(Tag::MEDIA_END_OF_STREAM) != parameter->end() &&
365         parameter->Get<Tag::MEDIA_END_OF_STREAM>(isEos) &&
366         parameter->Get<Tag::USER_FRAME_PTS>(eosPts_) &&
367         parameter->Get<Tag::USER_PUSH_DATA_TIME>(frameNum_)) {
368         if (isEos) {
369 #ifdef USE_VIDEO_PROCESSING_ENGINE
370             MEDIA_LOG_I("lastBuffer PTS: " PUBLIC_LOG_D64 " frameNum: " PUBLIC_LOG_D64,
371                 eosPts_, frameNum_);
372             if (videoEnhancer_ == nullptr) {
373                 MEDIA_LOG_E("videoEnhancer is null");
374                 return;
375             }
376             if (currentFrameNum_.load() >= frameNum_) {
377                 MEDIA_LOG_I("currentFrameNum: " PUBLIC_LOG_D64 " frameNum: " PUBLIC_LOG_D64,
378                     currentFrameNum_.load(), frameNum_);
379                 videoEnhancer_->NotifyEos();
380             }
381 #endif
382             return;
383         }
384     }
385 
386 #ifdef USE_VIDEO_PROCESSING_ENGINE
387     if (videoEnhancer_ == nullptr) {
388         MEDIA_LOG_E("videoEnhancer is null");
389         return;
390     }
391     const DetailEnhancerParameters parameter_ = {"", DetailEnhancerLevel::DETAIL_ENH_LEVEL_MEDIUM};
392     int32_t ret = videoEnhancer_->SetParameter(parameter_, SourceType::VIDEO);
393     if (ret != 0) {
394         MEDIA_LOG_E("videoEnhancer SetParameter fail");
395         if (eventReceiver_) {
396             eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR,
397                 MSERR_UNSUPPORT_VID_PARAMS});
398         }
399     }
400 #else
401     MEDIA_LOG_E("no VPE module");
402     eventReceiver_->OnEvent({"video_resize_filter", EventType::EVENT_ERROR, MSERR_UNKNOWN});
403 #endif
404 }
405 
GetParameter(std::shared_ptr<Meta> & parameter)406 void VideoResizeFilter::GetParameter(std::shared_ptr<Meta> &parameter)
407 {
408     MEDIA_LOG_I("GetParameter");
409 }
410 
LinkNext(const std::shared_ptr<Filter> & nextFilter,StreamType outType)411 Status VideoResizeFilter::LinkNext(const std::shared_ptr<Filter> &nextFilter, StreamType outType)
412 {
413     MEDIA_LOG_I("LinkNext");
414     nextFilter_ = nextFilter;
415     nextFiltersMap_[outType].push_back(nextFilter_);
416     std::shared_ptr<FilterLinkCallback> filterLinkCallback =
417         std::make_shared<VideoResizeFilterLinkCallback>(shared_from_this());
418     auto ret = nextFilter->OnLinked(outType, configureParameter_, filterLinkCallback);
419     if (ret != Status::OK && eventReceiver_) {
420         eventReceiver_->OnEvent({"VideoResizeFilter::LinkNext error", EventType::EVENT_ERROR, MSERR_UNKNOWN});
421     }
422     FALSE_RETURN_V_MSG_E(ret == Status::OK, ret, "OnLinked failed");
423     return Status::OK;
424 }
425 
UpdateNext(const std::shared_ptr<Filter> & nextFilter,StreamType outType)426 Status VideoResizeFilter::UpdateNext(const std::shared_ptr<Filter> &nextFilter, StreamType outType)
427 {
428     MEDIA_LOG_I("UpdateNext");
429     return Status::OK;
430 }
431 
UnLinkNext(const std::shared_ptr<Filter> & nextFilter,StreamType outType)432 Status VideoResizeFilter::UnLinkNext(const std::shared_ptr<Filter> &nextFilter, StreamType outType)
433 {
434     MEDIA_LOG_I("UnLinkNext");
435     return Status::OK;
436 }
437 
GetFilterType()438 FilterType VideoResizeFilter::GetFilterType()
439 {
440     MEDIA_LOG_I("GetFilterType");
441     return filterType_;
442 }
443 
OnLinked(StreamType inType,const std::shared_ptr<Meta> & meta,const std::shared_ptr<FilterLinkCallback> & callback)444 Status VideoResizeFilter::OnLinked(StreamType inType, const std::shared_ptr<Meta> &meta,
445     const std::shared_ptr<FilterLinkCallback> &callback)
446 {
447     MEDIA_LOG_I("OnLinked");
448     onLinkedResultCallback_ = callback;
449     return Status::OK;
450 }
451 
OnUpdated(StreamType inType,const std::shared_ptr<Meta> & meta,const std::shared_ptr<FilterLinkCallback> & callback)452 Status VideoResizeFilter::OnUpdated(StreamType inType, const std::shared_ptr<Meta> &meta,
453     const std::shared_ptr<FilterLinkCallback> &callback)
454 {
455     MEDIA_LOG_I("OnUpdated");
456     return Status::OK;
457 }
458 
OnUnLinked(StreamType inType,const std::shared_ptr<FilterLinkCallback> & callback)459 Status VideoResizeFilter::OnUnLinked(StreamType inType, const std::shared_ptr<FilterLinkCallback>& callback)
460 {
461     MEDIA_LOG_I("OnUnLinked");
462     return Status::OK;
463 }
464 
OnLinkedResult(const sptr<AVBufferQueueProducer> & outputBufferQueue,std::shared_ptr<Meta> & meta)465 void VideoResizeFilter::OnLinkedResult(const sptr<AVBufferQueueProducer> &outputBufferQueue,
466     std::shared_ptr<Meta> &meta)
467 {
468     MEDIA_LOG_I("OnLinkedResult enter");
469     if (onLinkedResultCallback_) {
470         onLinkedResultCallback_->OnLinkedResult(nullptr, meta);
471     }
472 }
473 
OnUpdatedResult(std::shared_ptr<Meta> & meta)474 void VideoResizeFilter::OnUpdatedResult(std::shared_ptr<Meta> &meta)
475 {
476     MEDIA_LOG_I("OnUpdatedResult");
477     (void) meta;
478 }
479 
OnUnlinkedResult(std::shared_ptr<Meta> & meta)480 void VideoResizeFilter::OnUnlinkedResult(std::shared_ptr<Meta> &meta)
481 {
482     MEDIA_LOG_I("OnUnlinkedResult");
483     (void) meta;
484 }
485 
OnOutputBufferAvailable(uint32_t index,uint32_t flag)486 void VideoResizeFilter::OnOutputBufferAvailable(uint32_t index, uint32_t flag)
487 {
488     MEDIA_LOG_D("OnOutputBufferAvailable enter. index: " PUBLIC_LOG_U32, index);
489 #ifdef USE_VIDEO_PROCESSING_ENGINE
490     {
491         std::lock_guard<std::mutex> lock(releaseBufferMutex_);
492         if (flag != static_cast<uint32_t>(DETAIL_ENH_BUFFER_FLAG_EOS)) {
493             currentFrameNum_.fetch_add(VARIABLE_INCREMENT_INTERVAL, std::memory_order_relaxed);
494             indexs_.push_back(index);
495             if (videoEnhancer_ && currentFrameNum_.load() >= frameNum_) {
496                 MEDIA_LOG_I("currentFrameNum: " PUBLIC_LOG_D64 " frameNum: " PUBLIC_LOG_D64,
497                     currentFrameNum_.load(), frameNum_);
498                 videoEnhancer_->NotifyEos();
499             }
500         }
501     }
502     releaseBufferCondition_.notify_all();
503 #endif
504 }
505 
ReleaseBuffer()506 void VideoResizeFilter::ReleaseBuffer()
507 {
508     MEDIA_LOG_I("ReleaseBuffer");
509     while (!isThreadExit_) {
510         std::vector<uint32_t> indexs;
511         {
512             std::unique_lock<std::mutex> lock(releaseBufferMutex_);
513             releaseBufferCondition_.wait(lock, [this] {
514                 return isThreadExit_ || !indexs_.empty();
515             });
516             indexs = indexs_;
517             indexs_.clear();
518         }
519 #ifdef USE_VIDEO_PROCESSING_ENGINE
520         if (videoEnhancer_) {
521             for (auto &index : indexs) {
522                 videoEnhancer_->ReleaseOutputBuffer(index, true);
523             }
524         }
525 #endif
526     }
527 }
528 
SetFaultEvent(const std::string & errMsg,int32_t ret)529 void VideoResizeFilter::SetFaultEvent(const std::string &errMsg, int32_t ret)
530 {
531     MEDIA_LOG_I("SetFaultEvent");
532 }
533 
SetFaultEvent(const std::string & errMsg)534 void VideoResizeFilter::SetFaultEvent(const std::string &errMsg)
535 {
536     MEDIA_LOG_I("SetFaultEvent");
537 }
538 
SetCallingInfo(int32_t appUid,int32_t appPid,const std::string & bundleName,uint64_t instanceId)539 void VideoResizeFilter::SetCallingInfo(int32_t appUid, int32_t appPid,
540     const std::string &bundleName, uint64_t instanceId)
541 {
542     appUid_ = appUid;
543     appPid_ = appPid;
544     bundleName_ = bundleName;
545     instanceId_ = instanceId;
546 }
547 } // namespace Pipeline
548 } // namespace MEDIA
549 } // namespace OHOS