• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 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 "picture_assembler.h"
17 
18 #include "camera_log.h"
19 #include "hstream_capture.h"
20 #include "photo_asset_auxiliary_consumer.h"
21 
22 namespace OHOS {
23 namespace CameraStandard {
24 
PictureAssembler(wptr<HStreamCapture> streamCapture)25 PictureAssembler::PictureAssembler(wptr<HStreamCapture> streamCapture)
26     : streamCapture_(streamCapture)
27 {
28     MEDIA_INFO_LOG("PictureAssembler new E");
29 }
30 
~PictureAssembler()31 PictureAssembler::~PictureAssembler()
32 {
33     MEDIA_INFO_LOG("PictureAssembler ~ E");
34 }
35 
RegisterAuxiliaryConsumers()36 void PictureAssembler::RegisterAuxiliaryConsumers()
37 {
38     MEDIA_INFO_LOG("RegisterAuxiliaryConsumers E");
39     sptr<HStreamCapture> streamCapture = streamCapture_.promote();
40     CHECK_RETURN_ELOG(streamCapture == nullptr, "streamCapture is null");
41     SurfaceError ret;
42     std::string retStr = "";
43     if (streamCapture->gainmapSurface_ != nullptr) {
44         MEDIA_INFO_LOG("RegisterAuxiliaryConsumers 1 surfaceId: %{public}" PRIu64,
45             streamCapture->gainmapSurface_->GetUniqueId());
46         streamCapture->gainmapListener_ = new (std::nothrow) AuxiliaryBufferConsumer(S_GAINMAP, streamCapture);
47         CHECK_RETURN_ELOG(streamCapture->gainmapListener_ == nullptr, "streamCapture->gainmapListener_ is null");
48         ret = streamCapture->gainmapSurface_->RegisterConsumerListener(
49             (sptr<IBufferConsumerListener> &)streamCapture->gainmapListener_);
50         retStr = ret != SURFACE_ERROR_OK ? retStr + "[gainmap]" : retStr;
51     }
52     if (streamCapture->deepSurface_ != nullptr) {
53         MEDIA_INFO_LOG("RegisterAuxiliaryConsumers 2 surfaceId: %{public}" PRIu64,
54             streamCapture->deepSurface_->GetUniqueId());
55         streamCapture->deepListener_ = new (std::nothrow) AuxiliaryBufferConsumer(S_DEEP, streamCapture);
56         CHECK_RETURN_ELOG(streamCapture->deepListener_ == nullptr, "streamCapture->deepListener_ is null");
57         ret = streamCapture->deepSurface_->RegisterConsumerListener(
58             (sptr<IBufferConsumerListener> &)streamCapture->deepListener_);
59         retStr = ret != SURFACE_ERROR_OK ? retStr + "[deep]" : retStr;
60     }
61     if (streamCapture->exifSurface_ != nullptr) {
62         MEDIA_INFO_LOG("RegisterAuxiliaryConsumers 3 surfaceId: %{public}" PRIu64,
63             streamCapture->exifSurface_->GetUniqueId());
64         streamCapture->exifListener_ = new (std::nothrow) AuxiliaryBufferConsumer(S_EXIF, streamCapture);
65         CHECK_RETURN_ELOG(streamCapture->exifListener_ == nullptr, "streamCapture->exifListener_ is null");
66         ret = streamCapture->exifSurface_->RegisterConsumerListener(
67             (sptr<IBufferConsumerListener> &)streamCapture->exifListener_);
68         retStr = ret != SURFACE_ERROR_OK ? retStr + "[exif]" : retStr;
69     }
70     if (streamCapture->debugSurface_ != nullptr) {
71         MEDIA_INFO_LOG("RegisterAuxiliaryConsumers 4 surfaceId: %{public}" PRIu64,
72             streamCapture->debugSurface_->GetUniqueId());
73         streamCapture->debugListener_ = new (std::nothrow) AuxiliaryBufferConsumer(S_DEBUG, streamCapture);
74         CHECK_RETURN_ELOG(streamCapture->debugListener_ == nullptr, "streamCapture->debugListener_ is null");
75         ret = streamCapture->debugSurface_->RegisterConsumerListener(
76             (sptr<IBufferConsumerListener> &)streamCapture->debugListener_);
77         retStr = ret != SURFACE_ERROR_OK ? retStr + "[debug]" : retStr;
78     }
79     if (retStr != "") {
80         MEDIA_ERR_LOG("register surface consumer listener failed! type = %{public}s", retStr.c_str());
81     }
82     MEDIA_INFO_LOG("RegisterAuxiliaryConsumers X");
83 }
84 }  // namespace CameraStandard
85 }  // namespace OHOS
86