mirror of
https://github.com/openharmony/distributed_camera.git
synced 2026-07-19 16:43:57 -04:00
@@ -43,6 +43,7 @@ ohos_shared_library("distributed_camera_utils") {
|
||||
"src/utils/data_buffer.cpp",
|
||||
"src/utils/dcamera_buffer_handle.cpp",
|
||||
"src/utils/dcamera_hisysevent_adapter.cpp",
|
||||
"src/utils/dcamera_hitrace_adapter.cpp",
|
||||
"src/utils/dcamera_sa_process_state.cpp",
|
||||
"src/utils/dcamera_utils_tools.cpp",
|
||||
]
|
||||
@@ -62,6 +63,7 @@ ohos_shared_library("distributed_camera_utils") {
|
||||
"dsoftbus_standard:softbus_client",
|
||||
"graphic_chipsetsdk:buffer_handle",
|
||||
"hisysevent_native:libhisysevent",
|
||||
"hitrace_native:hitrace_meter",
|
||||
"hiviewdfx_hilog_native:libhilog",
|
||||
]
|
||||
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2022 Huawei Device Co., Ltd.
|
||||
* 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 OHOS_DCAMERA_HITRACE_ADAPTER_H
|
||||
#define OHOS_DCAMERA_HITRACE_ADAPTER_H
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "hitrace_meter.h"
|
||||
|
||||
#define DCAMERA_SYNC_TRACE HITRACE_METER(DCAMERA_HITRACE_LABEL)
|
||||
|
||||
namespace OHOS {
|
||||
namespace DistributedHardware {
|
||||
constexpr uint64_t DCAMERA_HITRACE_LABEL = HITRACE_TAG_DISTRIBUTED_CAMERA;
|
||||
const std::string DCAMERA_OPEN_CHANNEL_CONTROL = "DCAMERA_OPEN_CHANNEL_CONTROL";
|
||||
const std::string DCAMERA_OPEN_DATA_CONTINUE = "DCAMERA_OPEN_DATA_CONTINUE";
|
||||
const std::string DCAMERA_OPEN_DATA_SNAPSHOT = "DCAMERA_OPEN_DATA_SNAPSHOT";
|
||||
const std::string DCAMERA_CONTINUE_FIRST_FRAME = "DCAMERA_CONTINUE_FIRST_FRAME";
|
||||
const std::string DCAMERA_SNAPSHOT_FIRST_FRAME = "DCAMERA_SNAPSHOT_FIRST_FRAME";
|
||||
enum DcameraTaskId {
|
||||
DCAMERA_OPEN_CHANNEL_TASKID = 0,
|
||||
DCAMERA_OPEN_DATA_CONTINUE_TASKID = 1,
|
||||
DCAMERA_OPEN_DATA_SNAPSHOT_TASKID = 2,
|
||||
DCAMERA_CONTINUE_FIRST_FRAME_TASKID = 3,
|
||||
DCAMERA_SNAPSHOT_FIRST_FRAME_TASKID = 4,
|
||||
};
|
||||
|
||||
void DcameraStartAsyncTrace(const std::string& str, int32_t taskId);
|
||||
void DcameraFinishAsyncTrace(const std::string& str, int32_t taskId);
|
||||
} // namespace DistributedHardware
|
||||
} // namespace OHOS
|
||||
#endif // OHOS_DCAMERA_HITRACE_ADAPTER_H
|
||||
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* Copyright (c) 2022 Huawei Device Co., Ltd.
|
||||
* 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 "dcamera_hitrace_adapter.h"
|
||||
#include "distributed_hardware_log.h"
|
||||
|
||||
namespace OHOS {
|
||||
namespace DistributedHardware {
|
||||
void DcameraStartAsyncTrace(const std::string& str, int32_t taskId)
|
||||
{
|
||||
StartAsyncTrace(DCAMERA_HITRACE_LABEL, str, taskId, -1);
|
||||
}
|
||||
|
||||
void DcameraFinishAsyncTrace(const std::string& str, int32_t taskId)
|
||||
{
|
||||
FinishAsyncTrace(DCAMERA_HITRACE_LABEL, str, taskId);
|
||||
}
|
||||
} // namespace DistributedHardware
|
||||
} // namespace OHOS
|
||||
@@ -105,6 +105,7 @@ ohos_shared_library("distributed_camera_source") {
|
||||
"device_driver_framework:libhdi",
|
||||
"distributed_camera_device_driver_interface:libdistributed_camera_provider_proxy_1.0",
|
||||
"eventhandler:libeventhandler",
|
||||
"hitrace_native:hitrace_meter",
|
||||
"hiviewdfx_hilog_native:libhilog",
|
||||
"ipc:ipc_core",
|
||||
"safwk:system_ability_fwk",
|
||||
|
||||
@@ -75,6 +75,7 @@ private:
|
||||
void NotifyRegisterResult(DCAMERA_EVENT eventType, DCameraSourceEvent& event, int32_t result);
|
||||
void NotifyUnregisterResult(DCAMERA_EVENT eventType, DCameraSourceEvent& event, int32_t result);
|
||||
void NotifyHalResult(DCAMERA_EVENT eventType, DCameraSourceEvent& event, int32_t result);
|
||||
void HitraceAndHisyseventImpl(std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos);
|
||||
|
||||
private:
|
||||
std::string devId_;
|
||||
|
||||
+1
@@ -48,6 +48,7 @@ private:
|
||||
std::string devId_;
|
||||
std::string dhId_;
|
||||
DCStreamType streamType_;
|
||||
bool isFirstContStream_;
|
||||
};
|
||||
} // namespace DistributedHardware
|
||||
} // namespace OHOS
|
||||
|
||||
+3
@@ -48,6 +48,9 @@ public:
|
||||
void OnSessionError(DCStreamType streamType, int32_t eventType, int32_t eventReason, std::string detail);
|
||||
void OnDataReceived(DCStreamType streamType, std::vector<std::shared_ptr<DataBuffer>>& buffers);
|
||||
|
||||
private:
|
||||
void FinshFrameAsyncTrace(DCStreamType streamType);
|
||||
|
||||
private:
|
||||
std::map<DCStreamType, std::shared_ptr<ICameraChannel>> channels_;
|
||||
std::map<DCStreamType, std::shared_ptr<ICameraChannelListener>> listeners_;
|
||||
|
||||
+2
@@ -25,6 +25,7 @@
|
||||
#include "anonymous_string.h"
|
||||
#include "dcamera_hdf_operate.h"
|
||||
#include "dcamera_hisysevent_adapter.h"
|
||||
#include "dcamera_hitrace_adapter.h"
|
||||
#include "dcamera_service_state_listener.h"
|
||||
#include "dcamera_source_service_ipc.h"
|
||||
#include "distributed_camera_errno.h"
|
||||
@@ -194,6 +195,7 @@ int32_t DistributedCameraSourceService::DCameraNotify(const std::string& devId,
|
||||
|
||||
int32_t DistributedCameraSourceService::LoadDCameraHDF()
|
||||
{
|
||||
DCAMERA_SYNC_TRACE;
|
||||
DHLOGI("load hdf driver start");
|
||||
int32_t ret = DCameraHdfOperate::GetInstance().LoadDcameraHDFImpl();
|
||||
if (ret != DCAMERA_OK) {
|
||||
|
||||
+31
-9
@@ -17,6 +17,7 @@
|
||||
|
||||
#include "anonymous_string.h"
|
||||
#include "dcamera_hisysevent_adapter.h"
|
||||
#include "dcamera_hitrace_adapter.h"
|
||||
#include "distributed_camera_constants.h"
|
||||
#include "distributed_camera_errno.h"
|
||||
#include "distributed_hardware_log.h"
|
||||
@@ -214,6 +215,7 @@ void DCameraSourceDev::OnEvent(DCameraSourceEvent& event)
|
||||
|
||||
int32_t DCameraSourceDev::ExecuteRegister(std::shared_ptr<DCameraRegistParam>& param)
|
||||
{
|
||||
DCAMERA_SYNC_TRACE;
|
||||
DHLOGI("DCameraSourceDev Execute Register devId: %s dhId: %s",
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
ReportRegisterCameraEvent(REGIST_CAMERA_EVENT, GetAnonyString(devId_), dhId_,
|
||||
@@ -259,6 +261,7 @@ int32_t DCameraSourceDev::ExecuteRegister(std::shared_ptr<DCameraRegistParam>& p
|
||||
|
||||
int32_t DCameraSourceDev::ExecuteUnRegister(std::shared_ptr<DCameraRegistParam>& param)
|
||||
{
|
||||
DCAMERA_SYNC_TRACE;
|
||||
DHLOGI("DCameraSourceDev Execute UnRegister devId: %s dhId: %s", GetAnonyString(devId_).c_str(),
|
||||
GetAnonyString(dhId_).c_str());
|
||||
ReportRegisterCameraEvent(UNREGIST_CAMERA_EVENT, GetAnonyString(devId_), dhId_,
|
||||
@@ -307,10 +310,12 @@ int32_t DCameraSourceDev::ExecuteOpenCamera()
|
||||
return ret;
|
||||
}
|
||||
|
||||
DcameraStartAsyncTrace(DCAMERA_OPEN_CHANNEL_CONTROL, DCAMERA_OPEN_CHANNEL_TASKID);
|
||||
ret = controller_->OpenChannel(openInfo);
|
||||
if (ret != DCAMERA_OK) {
|
||||
DHLOGE("DCameraSourceDev Execute OpenCamera OpenChannel failed, ret: %d, devId: %s dhId: %s", ret,
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_CHANNEL_CONTROL, DCAMERA_OPEN_CHANNEL_TASKID);
|
||||
return DCAMERA_OPEN_CONFLICT;
|
||||
}
|
||||
return DCAMERA_OK;
|
||||
@@ -403,12 +408,15 @@ int32_t DCameraSourceDev::ExecuteReleaseAllStreams()
|
||||
|
||||
int32_t DCameraSourceDev::ExecuteStartCapture(std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos)
|
||||
{
|
||||
HitraceAndHisyseventImpl(captureInfos);
|
||||
DHLOGI("DCameraSourceDev Execute StartCapture devId %s dhId %s", GetAnonyString(devId_).c_str(),
|
||||
GetAnonyString(dhId_).c_str());
|
||||
int32_t ret = input_->StartCapture(captureInfos);
|
||||
if (ret != DCAMERA_OK) {
|
||||
DHLOGE("DCameraSourceDev input StartCapture failed ret: %d, devId: %s, dhId: %s", ret,
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DcameraFinishAsyncTrace(DCAMERA_CONTINUE_FIRST_FRAME, DCAMERA_CONTINUE_FIRST_FRAME_TASKID);
|
||||
DcameraFinishAsyncTrace(DCAMERA_SNAPSHOT_FIRST_FRAME, DCAMERA_SNAPSHOT_FIRST_FRAME_TASKID);
|
||||
return ret;
|
||||
}
|
||||
std::vector<std::shared_ptr<DCameraCaptureInfo>> captures;
|
||||
@@ -425,15 +433,6 @@ int32_t DCameraSourceDev::ExecuteStartCapture(std::vector<std::shared_ptr<DCCapt
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), (*iter)->captureSettings_.size(),
|
||||
capture->width_, capture->height_, capture->format_, capture->isCapture_ ? 1 : 0, capture->encodeType_,
|
||||
capture->streamType_);
|
||||
EventCaptureInfo eventCaptureInfo = {
|
||||
.width_ = capture->width_,
|
||||
.height_ = capture->height_,
|
||||
.format_ = capture->format_,
|
||||
.isCapture_ = capture->isCapture_,
|
||||
.encodeType_ = capture->encodeType_,
|
||||
.type_ = capture->streamType_,
|
||||
};
|
||||
ReportStartCaptureEvent(START_CAPTURE_EVENT, eventCaptureInfo, "execute start capture event.");
|
||||
for (auto settingIter = (*iter)->captureSettings_.begin(); settingIter != (*iter)->captureSettings_.end();
|
||||
settingIter++) {
|
||||
std::shared_ptr<DCameraSettings> setting = std::make_shared<DCameraSettings>();
|
||||
@@ -448,10 +447,33 @@ int32_t DCameraSourceDev::ExecuteStartCapture(std::vector<std::shared_ptr<DCCapt
|
||||
if (ret != DCAMERA_OK) {
|
||||
DHLOGE("DCameraSourceDev Execute StartCapture StartCapture failed, ret: %d, devId: %s dhId: %s", ret,
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DcameraFinishAsyncTrace(DCAMERA_CONTINUE_FIRST_FRAME, DCAMERA_CONTINUE_FIRST_FRAME_TASKID);
|
||||
DcameraFinishAsyncTrace(DCAMERA_SNAPSHOT_FIRST_FRAME, DCAMERA_SNAPSHOT_FIRST_FRAME_TASKID);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void DCameraSourceDev::HitraceAndHisyseventImpl(std::vector<std::shared_ptr<DCCaptureInfo>>& captureInfos)
|
||||
{
|
||||
for (auto iter = captureInfos.begin(); iter != captureInfos.end(); iter++) {
|
||||
std::shared_ptr<DCCaptureInfo> capture = *iter;
|
||||
EventCaptureInfo eventCaptureInfo = {
|
||||
.width_ = capture->width_,
|
||||
.height_ = capture->height_,
|
||||
.format_ = capture->format_,
|
||||
.isCapture_ = capture->isCapture_,
|
||||
.encodeType_ = capture->encodeType_,
|
||||
.type_ = capture->type_,
|
||||
};
|
||||
ReportStartCaptureEvent(START_CAPTURE_EVENT, eventCaptureInfo, "execute start capture event.");
|
||||
if (capture->type_ == CONTINUOUS_FRAME && capture->isCapture_ == true) {
|
||||
DcameraStartAsyncTrace(DCAMERA_CONTINUE_FIRST_FRAME, DCAMERA_CONTINUE_FIRST_FRAME_TASKID);
|
||||
} else if (capture->type_ == SNAPSHOT_FRAME && capture->isCapture_ == true) {
|
||||
DcameraStartAsyncTrace(DCAMERA_SNAPSHOT_FIRST_FRAME, DCAMERA_SNAPSHOT_FIRST_FRAME_TASKID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int32_t DCameraSourceDev::ExecuteStopCapture(std::vector<int>& streamIds, bool& isAllStop)
|
||||
{
|
||||
DHLOGI("DCameraSourceDev Execute StopCapture devId %s dhId %s", GetAnonyString(devId_).c_str(),
|
||||
|
||||
+7
@@ -20,6 +20,7 @@
|
||||
|
||||
#include "dcamera_capture_info_cmd.h"
|
||||
#include "dcamera_channel_source_impl.h"
|
||||
#include "dcamera_hitrace_adapter.h"
|
||||
#include "dcamera_metadata_setting_cmd.h"
|
||||
#include "dcamera_protocol.h"
|
||||
#include "dcamera_source_controller_channel_listener.h"
|
||||
@@ -165,6 +166,10 @@ int32_t DCameraSourceController::ChannelNeg(std::shared_ptr<DCameraChannelInfo>&
|
||||
|
||||
int32_t DCameraSourceController::DCameraNotify(std::shared_ptr<DCameraEvent>& events)
|
||||
{
|
||||
if (events->eventResult_ == DCAMERA_EVENT_CAMERA_ERROR) {
|
||||
DcameraFinishAsyncTrace(DCAMERA_CONTINUE_FIRST_FRAME, DCAMERA_CONTINUE_FIRST_FRAME_TASKID);
|
||||
DcameraFinishAsyncTrace(DCAMERA_SNAPSHOT_FIRST_FRAME, DCAMERA_SNAPSHOT_FIRST_FRAME_TASKID);
|
||||
}
|
||||
sptr<IDCameraProvider> camHdiProvider = IDCameraProvider::Get(HDF_DCAMERA_EXT_SERVICE);
|
||||
if (camHdiProvider == nullptr) {
|
||||
DHLOGI("DCameraNotify camHdiProvider is nullptr devId: %s dhId: %s", GetAnonyString(devId_).c_str(),
|
||||
@@ -381,6 +386,7 @@ void DCameraSourceController::OnSessionState(int32_t state)
|
||||
channelState_ = state;
|
||||
switch (state) {
|
||||
case DCAMERA_CHANNEL_STATE_CONNECTED: {
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_CHANNEL_CONTROL, DCAMERA_OPEN_CHANNEL_TASKID);
|
||||
stateMachine_->UpdateState(DCAMERA_STATE_OPENED);
|
||||
std::shared_ptr<DCameraEvent> camEvent = std::make_shared<DCameraEvent>();
|
||||
camEvent->eventType_ = DCAMERA_MESSAGE;
|
||||
@@ -390,6 +396,7 @@ void DCameraSourceController::OnSessionState(int32_t state)
|
||||
break;
|
||||
}
|
||||
case DCAMERA_CHANNEL_STATE_DISCONNECTED: {
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_CHANNEL_CONTROL, DCAMERA_OPEN_CHANNEL_TASKID);
|
||||
DHLOGI("DCameraSourceDev PostTask Controller CloseSession OnClose devId %s dhId %s",
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DCameraIndex camIndex(devId_, dhId_);
|
||||
|
||||
+11
-1
@@ -16,6 +16,7 @@
|
||||
#include "dcamera_source_data_process.h"
|
||||
|
||||
#include "anonymous_string.h"
|
||||
#include "dcamera_hitrace_adapter.h"
|
||||
#include "distributed_camera_constants.h"
|
||||
#include "distributed_camera_errno.h"
|
||||
#include "distributed_hardware_log.h"
|
||||
@@ -23,7 +24,7 @@
|
||||
namespace OHOS {
|
||||
namespace DistributedHardware {
|
||||
DCameraSourceDataProcess::DCameraSourceDataProcess(std::string devId, std::string dhId, DCStreamType streamType)
|
||||
: devId_(devId), dhId_(dhId), streamType_(streamType)
|
||||
: devId_(devId), dhId_(dhId), streamType_(streamType), isFirstContStream_(true)
|
||||
{
|
||||
DHLOGI("DCameraSourceDataProcess Constructor devId %s dhId %s streamType %d", GetAnonyString(devId_).c_str(),
|
||||
GetAnonyString(dhId_).c_str(), streamType_);
|
||||
@@ -39,6 +40,12 @@ DCameraSourceDataProcess::~DCameraSourceDataProcess()
|
||||
|
||||
int32_t DCameraSourceDataProcess::FeedStream(std::vector<std::shared_ptr<DataBuffer>>& buffers)
|
||||
{
|
||||
if (isFirstContStream_ && streamType_ == CONTINUOUS_FRAME) {
|
||||
DcameraFinishAsyncTrace(DCAMERA_CONTINUE_FIRST_FRAME, DCAMERA_CONTINUE_FIRST_FRAME_TASKID);
|
||||
isFirstContStream_ = false;
|
||||
} else if (streamType_ == SNAPSHOT_FRAME) {
|
||||
DcameraFinishAsyncTrace(DCAMERA_SNAPSHOT_FIRST_FRAME, DCAMERA_SNAPSHOT_FIRST_FRAME_TASKID);
|
||||
}
|
||||
if (buffers.size() > DCAMERA_MAX_NUM) {
|
||||
DHLOGI("DCameraSourceDataProcess FeedStream devId %s dhId %s size: %d over flow",
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(), buffers.size());
|
||||
@@ -134,6 +141,9 @@ int32_t DCameraSourceDataProcess::StartCapture(std::shared_ptr<DCCaptureInfo>& c
|
||||
"dataspace: %d, encodeType: %d, streamType: %d", GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str(),
|
||||
captureInfo->width_, captureInfo->height_, captureInfo->format_, captureInfo->isCapture_,
|
||||
captureInfo->dataspace_, captureInfo->encodeType_, captureInfo->type_);
|
||||
if (streamType_ == CONTINUOUS_FRAME && captureInfo->isCapture_ == true) {
|
||||
isFirstContStream_ = true;
|
||||
}
|
||||
|
||||
std::shared_ptr<DCameraStreamConfig> streamConfig =
|
||||
std::make_shared<DCameraStreamConfig>(captureInfo->width_, captureInfo->height_, captureInfo->format_,
|
||||
|
||||
+22
@@ -16,6 +16,7 @@
|
||||
#include "dcamera_source_input.h"
|
||||
|
||||
#include "anonymous_string.h"
|
||||
#include "dcamera_hitrace_adapter.h"
|
||||
#include "distributed_camera_constants.h"
|
||||
#include "distributed_camera_errno.h"
|
||||
#include "distributed_hardware_log.h"
|
||||
@@ -184,11 +185,13 @@ int32_t DCameraSourceInput::OpenChannel(std::vector<DCameraIndex>& indexs)
|
||||
channelState_[SNAPSHOT_FRAME]);
|
||||
int32_t ret = DCAMERA_OK;
|
||||
if (channelState_[CONTINUOUS_FRAME] == DCAMERA_CHANNEL_STATE_DISCONNECTED) {
|
||||
DcameraStartAsyncTrace(DCAMERA_OPEN_DATA_CONTINUE, DCAMERA_OPEN_DATA_CONTINUE_TASKID);
|
||||
ret = channels_[CONTINUOUS_FRAME]->CreateSession(indexs, CONTINUE_SESSION_FLAG, DCAMERA_SESSION_MODE_VIDEO,
|
||||
listeners_[CONTINUOUS_FRAME]);
|
||||
if (ret != DCAMERA_OK) {
|
||||
DHLOGE("DCameraSourceInput CreateSession continue failed ret: %d, devId: %s, dhId: %s", ret,
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_DATA_CONTINUE, DCAMERA_OPEN_DATA_CONTINUE_TASKID);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -196,16 +199,19 @@ int32_t DCameraSourceInput::OpenChannel(std::vector<DCameraIndex>& indexs)
|
||||
if (ret != DCAMERA_OK) {
|
||||
DHLOGE("DCameraSourceInput OpenChannel continue stream failed ret: %d, devId: %s, dhId: %s", ret,
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_DATA_CONTINUE, DCAMERA_OPEN_DATA_CONTINUE_TASKID);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
if (channelState_[SNAPSHOT_FRAME] == DCAMERA_CHANNEL_STATE_DISCONNECTED) {
|
||||
DcameraStartAsyncTrace(DCAMERA_OPEN_DATA_SNAPSHOT, DCAMERA_OPEN_DATA_SNAPSHOT_TASKID);
|
||||
ret = channels_[SNAPSHOT_FRAME]->CreateSession(indexs, SNAP_SHOT_SESSION_FLAG, DCAMERA_SESSION_MODE_JPEG,
|
||||
listeners_[SNAPSHOT_FRAME]);
|
||||
if (ret != DCAMERA_OK) {
|
||||
DHLOGE("DCameraSourceInput Init CreateSession snapshot failed ret: %d, devId: %s, dhId: %s", ret,
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_DATA_SNAPSHOT, DCAMERA_OPEN_DATA_SNAPSHOT_TASKID);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -213,6 +219,7 @@ int32_t DCameraSourceInput::OpenChannel(std::vector<DCameraIndex>& indexs)
|
||||
if (ret != DCAMERA_OK) {
|
||||
DHLOGE("DCameraSourceInput OpenChannel snapshot stream failed ret: %d, devId: %s, dhId: %s", ret,
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_DATA_SNAPSHOT, DCAMERA_OPEN_DATA_SNAPSHOT_TASKID);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
@@ -311,6 +318,7 @@ void DCameraSourceInput::OnSessionState(DCStreamType streamType, int32_t state)
|
||||
channelState_[streamType] = (DCameraChannelState)state;
|
||||
switch (state) {
|
||||
case DCAMERA_CHANNEL_STATE_DISCONNECTED: {
|
||||
FinshFrameAsyncTrace(streamType);
|
||||
DHLOGI("DCameraSourceDev PostTask CloseSession Input OnClose devId %s dhId %s",
|
||||
GetAnonyString(devId_).c_str(), GetAnonyString(dhId_).c_str());
|
||||
DCameraIndex camIndex(devId_, dhId_);
|
||||
@@ -323,6 +331,11 @@ void DCameraSourceInput::OnSessionState(DCStreamType streamType, int32_t state)
|
||||
eventBus_->PostEvent<DCameraSourceEvent>(srcEvent);
|
||||
break;
|
||||
}
|
||||
case DCAMERA_CHANNEL_STATE_CONNECTED: {
|
||||
FinshFrameAsyncTrace(streamType);
|
||||
DHLOGI("DCameraSourceInput OnSessionState state %d", state);
|
||||
break;
|
||||
}
|
||||
default: {
|
||||
DHLOGI("DCameraSourceInput OnSessionState state %d", state);
|
||||
break;
|
||||
@@ -330,6 +343,15 @@ void DCameraSourceInput::OnSessionState(DCStreamType streamType, int32_t state)
|
||||
}
|
||||
}
|
||||
|
||||
void DCameraSourceInput::FinshFrameAsyncTrace(DCStreamType streamType)
|
||||
{
|
||||
if (streamType == CONTINUOUS_FRAME) {
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_DATA_CONTINUE, DCAMERA_OPEN_DATA_CONTINUE_TASKID);
|
||||
} else if (streamType == SNAPSHOT_FRAME) {
|
||||
DcameraFinishAsyncTrace(DCAMERA_OPEN_DATA_SNAPSHOT, DCAMERA_OPEN_DATA_SNAPSHOT_TASKID);
|
||||
}
|
||||
}
|
||||
|
||||
void DCameraSourceInput::OnSessionError(DCStreamType streamType, int32_t eventType, int32_t eventReason,
|
||||
std::string detail)
|
||||
{
|
||||
|
||||
@@ -84,6 +84,7 @@ ohos_shared_library("distributed_camera_data_process") {
|
||||
|
||||
external_deps = [
|
||||
"eventhandler:libeventhandler",
|
||||
"hitrace_native:hitrace_meter",
|
||||
"hiviewdfx_hilog_native:libhilog",
|
||||
"multimedia_media_standard:media_client",
|
||||
]
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include "dcamera_pipeline_sink.h"
|
||||
|
||||
#include "dcamera_hitrace_adapter.h"
|
||||
#include "distributed_hardware_log.h"
|
||||
|
||||
#include "encode_data_process.h"
|
||||
@@ -35,6 +36,7 @@ int32_t DCameraPipelineSink::CreateDataProcessPipeline(PipelineType piplineType,
|
||||
const VideoConfigParams& sourceConfig, const VideoConfigParams& targetConfig,
|
||||
const std::shared_ptr<DataProcessListener>& listener)
|
||||
{
|
||||
DCAMERA_SYNC_TRACE;
|
||||
DHLOGD("Create sink data process pipeline.");
|
||||
switch (piplineType) {
|
||||
case PipelineType::VIDEO:
|
||||
@@ -146,6 +148,7 @@ int32_t DCameraPipelineSink::ProcessData(std::vector<std::shared_ptr<DataBuffer>
|
||||
|
||||
void DCameraPipelineSink::DestroyDataProcessPipeline()
|
||||
{
|
||||
DCAMERA_SYNC_TRACE;
|
||||
DHLOGD("Destroy sink data process pipeline start.");
|
||||
isProcess_ = false;
|
||||
if (pipelineHead_ != nullptr) {
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
|
||||
#include "dcamera_pipeline_source.h"
|
||||
|
||||
#include "dcamera_hitrace_adapter.h"
|
||||
#include "distributed_hardware_log.h"
|
||||
|
||||
#include "color_format_process.h"
|
||||
@@ -37,6 +38,7 @@ int32_t DCameraPipelineSource::CreateDataProcessPipeline(PipelineType piplineTyp
|
||||
const VideoConfigParams& sourceConfig, const VideoConfigParams& targetConfig,
|
||||
const std::shared_ptr<DataProcessListener>& listener)
|
||||
{
|
||||
DCAMERA_SYNC_TRACE;
|
||||
DHLOGD("Create source data process pipeline.");
|
||||
switch (piplineType) {
|
||||
case PipelineType::VIDEO:
|
||||
@@ -168,6 +170,7 @@ int32_t DCameraPipelineSource::ProcessData(std::vector<std::shared_ptr<DataBuffe
|
||||
|
||||
void DCameraPipelineSource::DestroyDataProcessPipeline()
|
||||
{
|
||||
DCAMERA_SYNC_TRACE;
|
||||
DHLOGD("Destroy source data process pipeline start.");
|
||||
isProcess_ = false;
|
||||
if (pipelineHead_ != nullptr) {
|
||||
|
||||
Reference in New Issue
Block a user