1 /*
2 * Copyright (c) 2023-2023 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 "deferred_photo_job.h"
17 #include "dp_log.h"
18
19 namespace OHOS {
20 namespace CameraStandard {
21 namespace DeferredProcessing {
22
23
DeferredPhotoWork(DeferredPhotoJobPtr jobPtr,ExecutionMode mode)24 DeferredPhotoWork::DeferredPhotoWork(DeferredPhotoJobPtr jobPtr, ExecutionMode mode)
25 : jobPtr_(jobPtr),
26 executionMode_(mode)
27 {
28 //DPS_LOG
29 }
30
~DeferredPhotoWork()31 DeferredPhotoWork::~DeferredPhotoWork()
32 {
33 jobPtr_ = nullptr;
34 }
35
GetDeferredPhotoJob()36 DeferredPhotoJobPtr DeferredPhotoWork::GetDeferredPhotoJob()
37 {
38 return jobPtr_;
39 }
40
GetExecutionMode()41 ExecutionMode DeferredPhotoWork::GetExecutionMode()
42 {
43 return executionMode_;
44 }
45
DeferredPhotoJob(const std::string & imageId,bool discardable,DpsMetadata & metadata)46 DeferredPhotoJob::DeferredPhotoJob(const std::string& imageId, bool discardable, DpsMetadata& metadata)
47 : imageId_(imageId),
48 discardable_(discardable),
49 metadata_(metadata),
50 prePriority_(PhotoJobPriority::NONE),
51 curPriority_(PhotoJobPriority::NONE),
52 runningPriority_(PhotoJobPriority::NONE),
53 preStatus_(PhotoJobStatus::NONE),
54 curStatus_(PhotoJobStatus::NONE),
55 photoJobType_(0)
56 {
57 //DPS_LOG
58 }
59
~DeferredPhotoJob()60 DeferredPhotoJob::~DeferredPhotoJob()
61 {
62 //DPS_LOG
63 }
64
GetCurPriority()65 PhotoJobPriority DeferredPhotoJob::GetCurPriority()
66 {
67 DP_INFO_LOG("imageId: %s, current priority: %{public}d, previous priority: %{public}d",
68 imageId_.c_str(), curPriority_, prePriority_);
69 return curPriority_;
70 }
71
GetPrePriority()72 PhotoJobPriority DeferredPhotoJob::GetPrePriority()
73 {
74 DP_INFO_LOG("imageId: %s, current priority: %{public}d, previous priority: %{public}d",
75 imageId_.c_str(), curPriority_, prePriority_);
76 return prePriority_;
77 }
78
GetRunningPriority()79 PhotoJobPriority DeferredPhotoJob::GetRunningPriority()
80 {
81 DP_INFO_LOG("imageId: %s, current priority: %{public}d, previous priority: %{public}d,"
82 "running priority: %{public}d", imageId_.c_str(), curPriority_, prePriority_, runningPriority_);
83 return runningPriority_;
84 }
85
GetCurStatus()86 PhotoJobStatus DeferredPhotoJob::GetCurStatus()
87 {
88 DP_INFO_LOG("imageId: %s, current status: %{public}d, previous status: %{public}d",
89 imageId_.c_str(), curStatus_, preStatus_);
90 return curStatus_;
91 }
92
GetPreStatus()93 PhotoJobStatus DeferredPhotoJob::GetPreStatus()
94 {
95 DP_INFO_LOG("imageId: %s, current status: %{public}d, previous status: %{public}d",
96 imageId_.c_str(), curStatus_, preStatus_);
97 return preStatus_;
98 }
99
GetImageId()100 std::string& DeferredPhotoJob::GetImageId()
101 {
102 return imageId_;
103 }
104
105
GetDeferredProcType()106 int DeferredPhotoJob::GetDeferredProcType()
107 {
108 int type;
109 metadata_.Get(DEFERRED_PROCESSING_TYPE_KEY, type);
110 DP_INFO_LOG("imageId: %s, deferred proc type: %{public}d", imageId_.c_str(), type);
111 return type;
112 }
113
GetDiscardable()114 bool DeferredPhotoJob::GetDiscardable()
115 {
116 return discardable_;
117 }
118
SetPhotoJobType(int photoJobType)119 void DeferredPhotoJob::SetPhotoJobType(int photoJobType)
120 {
121 photoJobType_ = photoJobType;
122 }
123
GetPhotoJobType()124 int DeferredPhotoJob::GetPhotoJobType()
125 {
126 return photoJobType_;
127 }
128
SetJobStatus(PhotoJobStatus status)129 bool DeferredPhotoJob::SetJobStatus(PhotoJobStatus status)
130 {
131 DP_INFO_LOG("imageId: %s, current status: %{public}d, previous status: %{public}d, status to set: %{public}d",
132 imageId_.c_str(), curStatus_, preStatus_, status);
133 if (curStatus_ == status) {
134 return false;
135 } else {
136 preStatus_ = curStatus_;
137 curStatus_ = status;
138 return true;
139 }
140 }
141
SetJobPriority(PhotoJobPriority priority)142 bool DeferredPhotoJob::SetJobPriority(PhotoJobPriority priority)
143 {
144 DP_INFO_LOG("imageId: %s, current priority: %{public}d, previous priority: %{public}d, priority to set: %{public}d",
145 imageId_.c_str(), curPriority_, prePriority_, priority);
146 if (curPriority_ == priority) {
147 return false;
148 } else {
149 prePriority_ = curPriority_;
150 curPriority_ = priority;
151 return true;
152 }
153 }
154
RecordJobRunningPriority()155 void DeferredPhotoJob::RecordJobRunningPriority()
156 {
157 DP_INFO_LOG("imageId: %s, priority recorded: %{public}d, current priority: %{public}d,"
158 "previous priority: %{public}d", imageId_.c_str(), curPriority_, prePriority_, curPriority_);
159 runningPriority_ = curPriority_;
160 return;
161 }
162 } // namespace DeferredProcessing
163 } // namespace CameraStandard
164 } // namespace OHOS