diff --git a/services/common/utils/src/video_param.cpp b/services/common/utils/src/video_param.cpp index 4a4ebb2229c468afcebab6ac2c19e525051b9d8e..24e84f7982bf2d67224ae26bd6fd3bae12a913ca 100644 --- a/services/common/utils/src/video_param.cpp +++ b/services/common/utils/src/video_param.cpp @@ -119,8 +119,8 @@ void from_json(const json &j, DistributedHardware::VideoParam &videoParam) { if (!IsUInt32(j, KEY_SCREEN_WIDTH) || !IsUInt32(j, KEY_SCREEN_HEIGHT) || !IsUInt32(j, KEY_VIDEO_WIDTH) || !IsUInt32(j, KEY_VIDEO_HEIGHT) || - !IsBool(j, KEY_PARTIALREFREAH) || !IsUInt32(j, KEY_FPS) || - !IsUInt8(j, KEY_CODECTYPE) || !IsUInt8(j, KEY_COLOR_FORMAT)) { + !IsUInt32(j, KEY_FPS) || !IsUInt8(j, KEY_CODECTYPE) || + !IsUInt8(j, KEY_COLOR_FORMAT)) { return; } @@ -131,7 +131,10 @@ void from_json(const json &j, DistributedHardware::VideoParam &videoParam) videoParam.fps_ = j[KEY_FPS].get(); videoParam.codecType_ = j[KEY_CODECTYPE].get(); videoParam.videoFormat_ = j[KEY_COLOR_FORMAT].get(); - videoParam.isPartialRefresh_ = j[KEY_PARTIALREFREAH].get(); + videoParam.isPartialRefresh_ = false; + if (IsBool(j, KEY_PARTIALREFREAH)) { + videoParam.isPartialRefresh_ = j[KEY_PARTIALREFREAH].get(); + } } } // namespace DistributedHardware } // namespace OHOS diff --git a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp index 6793a2b867b36c52a3e453b7c54b958f3d7d2906..95daa9f601faa895107adeb64d16121e12d84fc6 100644 --- a/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp +++ b/services/screenservice/sinkservice/dscreenservice/src/dscreen_sink_service.cpp @@ -69,11 +69,9 @@ bool DScreenSinkService::Init() int32_t DScreenSinkService::InitSink(const std::string ¶ms) { DHLOGI("Init sink dscreen region manager, params: %s", params.c_str()); - if (IsSupportAVTransEngine(params)) { - int32_t ret = V2_0::ScreenRegionManager::GetInstance().Initialize(); - if (ret != DH_SUCCESS) { - DHLOGE("Initialize V2_0::ScreenRegionManage failed. err: %d", ret); - } + int32_t ret = V2_0::ScreenRegionManager::GetInstance().Initialize(); + if (ret != DH_SUCCESS) { + DHLOGE("Initialize V2_0::ScreenRegionManage failed. err: %d", ret); } return DH_SUCCESS; } diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp index 9e7f96f3a8a19919957b99636a2723e99d17ae1d..801a3614ff44b0a845c54b2f17d12fa160d9a9db 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen.cpp @@ -299,7 +299,6 @@ int32_t DScreen::NegotiateCodecType(const std::string &remoteCodecInfoStr) } localCodecArray.push_back(codecInfo->GetName()); } - std::vector codecTypeCandidates; for (const auto &remoteCodecType : remoteCodecArray) { if (std::find(localCodecArray.begin(), localCodecArray.end(), @@ -309,11 +308,6 @@ int32_t DScreen::NegotiateCodecType(const std::string &remoteCodecInfoStr) } if (std::find(codecTypeCandidates.begin(), codecTypeCandidates.end(), - CODEC_NAME_H265) != codecTypeCandidates.end()) { - videoParam_->SetCodecType(VIDEO_CODEC_TYPE_VIDEO_H265); - videoParam_->SetVideoFormat(VIDEO_DATA_FORMAT_NV12); - videoParam_->SetPartialRefreshFlag(true); - } else if (std::find(codecTypeCandidates.begin(), codecTypeCandidates.end(), CODEC_NAME_H264) != codecTypeCandidates.end()) { videoParam_->SetCodecType(VIDEO_CODEC_TYPE_VIDEO_H264); videoParam_->SetVideoFormat(VIDEO_DATA_FORMAT_NV12); @@ -322,11 +316,15 @@ int32_t DScreen::NegotiateCodecType(const std::string &remoteCodecInfoStr) CODEC_NAME_MPEG4) != codecTypeCandidates.end()) { videoParam_->SetCodecType(VIDEO_CODEC_TYPE_VIDEO_MPEG4); videoParam_->SetVideoFormat(VIDEO_DATA_FORMAT_RGBA8888); + } else if (std::find(codecTypeCandidates.begin(), codecTypeCandidates.end(), + CODEC_NAME_H265) != codecTypeCandidates.end()) { + videoParam_->SetCodecType(VIDEO_CODEC_TYPE_VIDEO_H265); + videoParam_->SetVideoFormat(VIDEO_DATA_FORMAT_NV12); + videoParam_->SetPartialRefreshFlag(true); } else { DHLOGI("codec type not support."); return ERR_DH_SCREEN_SA_DSCREEN_NEGOTIATE_CODEC_FAIL; } - return DH_SUCCESS; } diff --git a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp index b8453f5d57802913a92459914ef7ca8cc9a62a5f..418fd302e2775a1831af39026b9b8ec92f80e4af 100644 --- a/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/1.0/src/dscreen_manager.cpp @@ -59,19 +59,7 @@ DScreenManager::~DScreenManager() int32_t DScreenManager::Init() { - DHLOGI("DScreenManager::Init2.0"); - if (dScreenGroupListener_ == nullptr) { - dScreenGroupListener_ = new (std::nothrow) DScreenGroupListener(); - int32_t ret = ScreenMgrAdapter::GetInstance().RegisterScreenGroupListener(dScreenGroupListener_); - if (ret != DH_SUCCESS) { - DHLOGE("DScreenManager Init failed, err: %" PRId32, ret); - dScreenGroupListener_ = nullptr; - return ret; - } - } - if (dScreenCallback_ == nullptr) { - dScreenCallback_ = std::make_shared(); - } + DHLOGI("DScreenManager::Init1.0"); return DH_SUCCESS; } @@ -241,13 +229,24 @@ void DScreenManager::OnUnregResult(const std::shared_ptr &dScreen, int32_t DScreenManager::EnableDistributedScreen(const std::string &devId, const std::string &dhId, const EnableParam ¶m, const std::string &reqId) { - DHLOGI("EnableDistributedScreen2.0, devId: %s, dhId:%s", + DHLOGI("EnableDistributedScreen1.0, devId: %s, dhId:%s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); - if (dScreenCallback_ == nullptr) { - DHLOGE("dscreen manager not init."); + if (devId.empty() || dhId.empty() || param.version.empty() || param.attrs.empty() || reqId.empty()) { + DHLOGE("EnableDistributedScreen1.0 CheckRegParams is inlvalid."); return ERR_DH_SCREEN_SA_ENABLE_FAILED; } - + if (dScreenGroupListener_ == nullptr) { + dScreenGroupListener_ = new (std::nothrow) DScreenGroupListener(); + int32_t ret = ScreenMgrAdapter::GetInstance().RegisterScreenGroupListener(dScreenGroupListener_); + if (ret != DH_SUCCESS) { + DHLOGE("DScreenManager1.0 EnableDistributedScreen failed, err: %" PRId32, ret); + dScreenGroupListener_ = nullptr; + return ERR_DH_SCREEN_SA_ENABLE_FAILED; + } + } + if (dScreenCallback_ == nullptr) { + dScreenCallback_ = std::make_shared(); + } std::string dScreenIdx = devId + SEPERATOR + dhId; std::lock_guard lock(dScreenMapMtx_); std::shared_ptr dScreen = dScreens_[dScreenIdx]; diff --git a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp index 944d69e7a30ce6f1fc44b906ffffbefc2dbbf363..81ca68be55d9f68f60b5766ea1a455ad75c309f5 100644 --- a/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp +++ b/services/screenservice/sourceservice/dscreenmgr/2.0/src/dscreen_manager.cpp @@ -72,20 +72,7 @@ DScreenManager::~DScreenManager() int32_t DScreenManager::Initialize() { - DHLOGI("DScreenManager::Init3.0"); - if (dScreenGroupListener_ == nullptr) { - dScreenGroupListener_ = new (std::nothrow) DScreenGroupListener(); - int32_t ret = ScreenMgrAdapter::GetInstance().RegisterScreenGroupListener(dScreenGroupListener_); - if (ret != DH_SUCCESS) { - DHLOGE("DScreenManager Init failed, err: %" PRId32, ret); - delete dScreenGroupListener_; - dScreenGroupListener_ = nullptr; - return ret; - } - } - if (dScreenCallback_ == nullptr) { - dScreenCallback_ = std::make_shared(); - } + DHLOGI("DScreenManager::Init2.0"); int32_t ret = LoadAVSenderEngineProvider(); if (ret != DH_SUCCESS) { DHLOGE("Load av transport sender engine provider failed."); @@ -237,12 +224,25 @@ void DScreenManager::OnUnregResult(const std::shared_ptr &dScreen, int32_t DScreenManager::EnableDistributedScreen(const std::string &devId, const std::string &dhId, const EnableParam ¶m, const std::string &reqId) { - DHLOGI("EnableDistributedScreen3.0, devId: %s, dhId:%s", GetAnonyString(devId).c_str(), + DHLOGI("EnableDistributedScreen2.0, devId: %s, dhId:%s", GetAnonyString(devId).c_str(), GetAnonyString(dhId).c_str()); - if (dScreenCallback_ == nullptr) { - DHLOGE("dscreen manager not init."); + if (devId.empty() || dhId.empty() || param.version.empty() || param.attrs.empty() || reqId.empty()) { + DHLOGE("EnableDistributedScreen2.0 CheckRegParams is inlvalid."); return ERR_DH_SCREEN_SA_ENABLE_FAILED; } + if (dScreenGroupListener_ == nullptr) { + dScreenGroupListener_ = new (std::nothrow) DScreenGroupListener(); + int32_t ret = ScreenMgrAdapter::GetInstance().RegisterScreenGroupListener(dScreenGroupListener_); + if (ret != DH_SUCCESS) { + DHLOGE("DScreenManager2.0 EnableDistributedScreen failed, err: %" PRId32, ret); + delete dScreenGroupListener_; + dScreenGroupListener_ = nullptr; + return ERR_DH_SCREEN_SA_ENABLE_FAILED; + } + } + if (dScreenCallback_ == nullptr) { + dScreenCallback_ = std::make_shared(); + } std::string dScreenIdx = devId + SEPERATOR + dhId; std::lock_guard lock(dScreenMapMtx_); std::shared_ptr dScreen = dScreens_[dScreenIdx]; diff --git a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp index 6973b58833c4dff58746cac2925a72ac6aaf6102..e924a45618bf2f5f9f3b71ea10c49632ca5388c8 100644 --- a/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp +++ b/services/screenservice/sourceservice/dscreenservice/src/dscreen_source_service.cpp @@ -80,21 +80,18 @@ int32_t DScreenSourceService::InitSource(const std::string ¶ms, const sptr ImageSinkDecoder::GetWinSurfaceBuffer() sptr windowSurfaceBuffer = nullptr; int32_t releaseFence = -1; OHOS::BufferRequestConfig requestConfig = { - .width = configParam_.GetVideoWidth(), - .height = configParam_.GetVideoHeight(), + .width = static_cast(configParam_.GetVideoWidth()), + .height = static_cast(configParam_.GetVideoHeight()), .strideAlignment = STRIDE_ALIGNMENT, .format = GRAPHIC_PIXEL_FMT_YCBCR_420_SP, .usage = BUFFER_USAGE_CPU_READ | BUFFER_USAGE_CPU_WRITE | BUFFER_USAGE_MEM_DMA, diff --git a/services/screentransport/test/unittest/screendatachannel/src/screen_data_channel_impl_test.cpp b/services/screentransport/test/unittest/screendatachannel/src/screen_data_channel_impl_test.cpp index 3a567c667f6afdb311ec48db6201092c7a65e075..6a9754ce51392aa363933016059cb6451b2f9394 100644 --- a/services/screentransport/test/unittest/screendatachannel/src/screen_data_channel_impl_test.cpp +++ b/services/screentransport/test/unittest/screendatachannel/src/screen_data_channel_impl_test.cpp @@ -184,12 +184,12 @@ HWTEST_F(ScreenDataChannelImplTest, close_session_test_002, TestSize.Level1) EXPECT_EQ(ERR_DH_SCREEN_TRANS_SESSION_NOT_OPEN, dataChannelImpl_->CloseSession()); } -// /** -// * @tc.name: send_data_test_001 -// * @tc.desc: Verify the SendData function. -// * @tc.type: FUNC -// * @tc.require: Issue Number -// */ +/** + * @tc.name: send_data_test_001 + * @tc.desc: Verify the SendData function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ HWTEST_F(ScreenDataChannelImplTest, send_data_test_001, TestSize.Level1) { std::shared_ptr listener = nullptr; @@ -219,12 +219,12 @@ HWTEST_F(ScreenDataChannelImplTest, send_data_test_002, TestSize.Level1) EXPECT_EQ(ERR_DH_SCREEN_TRANS_NULL_VALUE, dataChannelImpl_->SendData(data)); } -// /** -// * @tc.name: send_data_test_003 -// * @tc.desc: Verify the SendData function. -// * @tc.type: FUNC -// * @tc.require: Issue Number -// */ +/** + * @tc.name: send_data_test_003 + * @tc.desc: Verify the SendData function. + * @tc.type: FUNC + * @tc.require: Issue Number + */ HWTEST_F(ScreenDataChannelImplTest, send_data_test_003, TestSize.Level1) { std::shared_ptr listener = nullptr;