17c804472Sopenharmony_ci/* 27c804472Sopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd. 37c804472Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47c804472Sopenharmony_ci * you may not use this file except in compliance with the License. 57c804472Sopenharmony_ci * You may obtain a copy of the License at 67c804472Sopenharmony_ci * 77c804472Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87c804472Sopenharmony_ci * 97c804472Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107c804472Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117c804472Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127c804472Sopenharmony_ci * See the License for the specific language governing permissions and 137c804472Sopenharmony_ci * limitations under the License. 147c804472Sopenharmony_ci */ 157c804472Sopenharmony_ci 167c804472Sopenharmony_ci#include "VirtualScreen.h" 177c804472Sopenharmony_ci#include "CommandParser.h" 187c804472Sopenharmony_ci#include "CppTimerManager.h" 197c804472Sopenharmony_ci#include "PreviewerEngineLog.h" 207c804472Sopenharmony_ci#include "VirtualScreen.h" 217c804472Sopenharmony_ci 227c804472Sopenharmony_ci#define boolean jpegboolean 237c804472Sopenharmony_ci#include "jpeglib.h" 247c804472Sopenharmony_ci#undef boolean 257c804472Sopenharmony_ci 267c804472Sopenharmony_ciuint32_t VirtualScreen::validFrameCountPerMinute = 0; 277c804472Sopenharmony_ciuint32_t VirtualScreen::invalidFrameCountPerMinute = 0; 287c804472Sopenharmony_ciuint32_t VirtualScreen::sendFrameCountPerMinute = 0; 297c804472Sopenharmony_ciuint32_t VirtualScreen::inputKeyCountPerMinute = 0; 307c804472Sopenharmony_ciuint32_t VirtualScreen::inputMethodCountPerMinute = 0; 317c804472Sopenharmony_cibool VirtualScreen::isWebSocketListening = false; 327c804472Sopenharmony_cistd::string VirtualScreen::webSocketPort = ""; 337c804472Sopenharmony_ci 347c804472Sopenharmony_cistd::chrono::system_clock::time_point VirtualScreen::startTime = std::chrono::system_clock::now(); 357c804472Sopenharmony_cistd::chrono::system_clock::time_point VirtualScreen::staticCardStartTime = std::chrono::system_clock::now(); 367c804472Sopenharmony_cibool VirtualScreen::isStartCount = true; 377c804472Sopenharmony_cibool VirtualScreen::isOutOfSeconds = false; 387c804472Sopenharmony_ci 397c804472Sopenharmony_ciVirtualScreen::VirtualScreen() 407c804472Sopenharmony_ci : isFrameUpdated(false), 417c804472Sopenharmony_ci orignalResolutionWidth(0), 427c804472Sopenharmony_ci orignalResolutionHeight(0), 437c804472Sopenharmony_ci compressionResolutionWidth(0), 447c804472Sopenharmony_ci compressionResolutionHeight(0), 457c804472Sopenharmony_ci screenSocket(nullptr), 467c804472Sopenharmony_ci frameCountTimer(nullptr), 477c804472Sopenharmony_ci isWebSocketConfiged(false), 487c804472Sopenharmony_ci currentRouter(""), 497c804472Sopenharmony_ci jpgScreenBuffer(nullptr), 507c804472Sopenharmony_ci jpgBufferSize(0) 517c804472Sopenharmony_ci{ 527c804472Sopenharmony_ci} 537c804472Sopenharmony_ci 547c804472Sopenharmony_ciVirtualScreen::~VirtualScreen() 557c804472Sopenharmony_ci{ 567c804472Sopenharmony_ci if (screenSocket != nullptr) { 577c804472Sopenharmony_ci screenSocket->DisconnectFromServer(); 587c804472Sopenharmony_ci delete screenSocket; 597c804472Sopenharmony_ci screenSocket = nullptr; 607c804472Sopenharmony_ci } 617c804472Sopenharmony_ci} 627c804472Sopenharmony_ci 637c804472Sopenharmony_cistd::string VirtualScreen::GetCurrentRouter() const 647c804472Sopenharmony_ci{ 657c804472Sopenharmony_ci return currentRouter; 667c804472Sopenharmony_ci} 677c804472Sopenharmony_ci 687c804472Sopenharmony_civoid VirtualScreen::SetCurrentRouter(const std::string currentRouterValue) 697c804472Sopenharmony_ci{ 707c804472Sopenharmony_ci currentRouter = currentRouterValue; 717c804472Sopenharmony_ci} 727c804472Sopenharmony_ci 737c804472Sopenharmony_cistd::string VirtualScreen::GetAbilityCurrentRouter() const 747c804472Sopenharmony_ci{ 757c804472Sopenharmony_ci return abilityCurrentRouter; 767c804472Sopenharmony_ci} 777c804472Sopenharmony_ci 787c804472Sopenharmony_civoid VirtualScreen::SetAbilityCurrentRouter(const std::string currentRouterValue) 797c804472Sopenharmony_ci{ 807c804472Sopenharmony_ci abilityCurrentRouter = currentRouterValue; 817c804472Sopenharmony_ci} 827c804472Sopenharmony_ci 837c804472Sopenharmony_ciint32_t VirtualScreen::GetOrignalWidth() const 847c804472Sopenharmony_ci{ 857c804472Sopenharmony_ci return orignalResolutionWidth; 867c804472Sopenharmony_ci} 877c804472Sopenharmony_ci 887c804472Sopenharmony_civoid VirtualScreen::SetOrignalWidth(const int32_t& value) 897c804472Sopenharmony_ci{ 907c804472Sopenharmony_ci orignalResolutionWidth = value; 917c804472Sopenharmony_ci} 927c804472Sopenharmony_ci 937c804472Sopenharmony_ciint32_t VirtualScreen::GetOrignalHeight() const 947c804472Sopenharmony_ci{ 957c804472Sopenharmony_ci return orignalResolutionHeight; 967c804472Sopenharmony_ci} 977c804472Sopenharmony_ci 987c804472Sopenharmony_civoid VirtualScreen::SetOrignalHeight(const int32_t& value) 997c804472Sopenharmony_ci{ 1007c804472Sopenharmony_ci orignalResolutionHeight = value; 1017c804472Sopenharmony_ci} 1027c804472Sopenharmony_ci 1037c804472Sopenharmony_ciint32_t VirtualScreen::GetCompressionWidth() const 1047c804472Sopenharmony_ci{ 1057c804472Sopenharmony_ci return compressionResolutionWidth; 1067c804472Sopenharmony_ci} 1077c804472Sopenharmony_ci 1087c804472Sopenharmony_civoid VirtualScreen::SetCompressionWidth(const int32_t& value) 1097c804472Sopenharmony_ci{ 1107c804472Sopenharmony_ci compressionResolutionWidth = value; 1117c804472Sopenharmony_ci} 1127c804472Sopenharmony_ci 1137c804472Sopenharmony_ciint32_t VirtualScreen::GetCompressionHeight() const 1147c804472Sopenharmony_ci{ 1157c804472Sopenharmony_ci return compressionResolutionHeight; 1167c804472Sopenharmony_ci} 1177c804472Sopenharmony_ci 1187c804472Sopenharmony_civoid VirtualScreen::SetCompressionHeight(const int32_t& value) 1197c804472Sopenharmony_ci{ 1207c804472Sopenharmony_ci compressionResolutionHeight = value; 1217c804472Sopenharmony_ci} 1227c804472Sopenharmony_ci 1237c804472Sopenharmony_civoid VirtualScreen::InitPipe(std::string pipeName, std::string pipePort) 1247c804472Sopenharmony_ci{ 1257c804472Sopenharmony_ci webSocketPort = pipePort; 1267c804472Sopenharmony_ci isWebSocketConfiged = true; 1277c804472Sopenharmony_ci WebSocketServer::GetInstance().SetServerPort(atoi(pipePort.c_str())); 1287c804472Sopenharmony_ci WebSocketServer::GetInstance().Run(); 1297c804472Sopenharmony_ci isWebSocketListening = true; 1307c804472Sopenharmony_ci} 1317c804472Sopenharmony_ci 1327c804472Sopenharmony_civoid VirtualScreen::InitVirtualScreen() 1337c804472Sopenharmony_ci{ 1347c804472Sopenharmony_ci int32_t orignalWidth = CommandParser::GetInstance().GetOrignalResolutionWidth(); 1357c804472Sopenharmony_ci int32_t orignalHeight = CommandParser::GetInstance().GetOrignalResolutionHeight(); 1367c804472Sopenharmony_ci int32_t compressionWidth = CommandParser::GetInstance().GetCompressionResolutionWidth(); 1377c804472Sopenharmony_ci int32_t compressionHeight = CommandParser::GetInstance().GetCompressionResolutionHeight(); 1387c804472Sopenharmony_ci SetVirtualScreenWidthAndHeight(orignalWidth, orignalHeight, compressionWidth, compressionHeight); 1397c804472Sopenharmony_ci} 1407c804472Sopenharmony_ci 1417c804472Sopenharmony_civoid VirtualScreen::SetVirtualScreenWidthAndHeight(const int32_t& orignalWidth, 1427c804472Sopenharmony_ci const int32_t& orignalHeight, 1437c804472Sopenharmony_ci const int32_t& compressionWidth, 1447c804472Sopenharmony_ci const int32_t& compressionHeight) 1457c804472Sopenharmony_ci{ 1467c804472Sopenharmony_ci VirtualScreen::SetOrignalWidth(orignalWidth); 1477c804472Sopenharmony_ci VirtualScreen::SetOrignalHeight(orignalHeight); 1487c804472Sopenharmony_ci VirtualScreen::SetCompressionWidth(compressionWidth); 1497c804472Sopenharmony_ci VirtualScreen::SetCompressionHeight(compressionHeight); 1507c804472Sopenharmony_ci} 1517c804472Sopenharmony_ci 1527c804472Sopenharmony_civoid VirtualScreen::WidthAndHeightReverse() 1537c804472Sopenharmony_ci{ 1547c804472Sopenharmony_ci int32_t temp = 0; 1557c804472Sopenharmony_ci temp = orignalResolutionHeight; 1567c804472Sopenharmony_ci orignalResolutionHeight = orignalResolutionWidth; 1577c804472Sopenharmony_ci orignalResolutionWidth = temp; 1587c804472Sopenharmony_ci temp = compressionResolutionHeight; 1597c804472Sopenharmony_ci compressionResolutionHeight = compressionResolutionWidth; 1607c804472Sopenharmony_ci compressionResolutionWidth = temp; 1617c804472Sopenharmony_ci} 1627c804472Sopenharmony_ci 1637c804472Sopenharmony_civoid VirtualScreen::InitFrameCountTimer() 1647c804472Sopenharmony_ci{ 1657c804472Sopenharmony_ci if (frameCountTimer.get() != nullptr) { 1667c804472Sopenharmony_ci ILOG("VirtualScreen::InitFrameCountTimer timer is already started."); 1677c804472Sopenharmony_ci return; 1687c804472Sopenharmony_ci } 1697c804472Sopenharmony_ci 1707c804472Sopenharmony_ci frameCountTimer = std::make_unique<CppTimer>(VirtualScreen::PrintFrameCount); 1717c804472Sopenharmony_ci if (frameCountTimer == nullptr) { 1727c804472Sopenharmony_ci ELOG("JsApp::InitTimer taskHandleTimer memory allocation failed."); 1737c804472Sopenharmony_ci return; 1747c804472Sopenharmony_ci } 1757c804472Sopenharmony_ci CppTimerManager::GetTimerManager().AddCppTimer(*frameCountTimer); 1767c804472Sopenharmony_ci frameCountTimer->Start(frameCountPeriod); 1777c804472Sopenharmony_ci} 1787c804472Sopenharmony_ci 1797c804472Sopenharmony_civoid VirtualScreen::PrintFrameCount() 1807c804472Sopenharmony_ci{ 1817c804472Sopenharmony_ci if ((validFrameCountPerMinute | invalidFrameCountPerMinute | sendFrameCountPerMinute | 1827c804472Sopenharmony_ci inputKeyCountPerMinute | inputMethodCountPerMinute) == 0) { 1837c804472Sopenharmony_ci return; 1847c804472Sopenharmony_ci } 1857c804472Sopenharmony_ci 1867c804472Sopenharmony_ci ELOG("ValidFrameCount: %d InvalidFrameCount: %d SendFrameCount: %d inputKeyCount: %d\ 1877c804472Sopenharmony_ci inputMethodCount: %d", validFrameCountPerMinute, invalidFrameCountPerMinute, 1887c804472Sopenharmony_ci sendFrameCountPerMinute, inputKeyCountPerMinute, inputMethodCountPerMinute); 1897c804472Sopenharmony_ci validFrameCountPerMinute = 0; 1907c804472Sopenharmony_ci invalidFrameCountPerMinute = 0; 1917c804472Sopenharmony_ci sendFrameCountPerMinute = 0; 1927c804472Sopenharmony_ci inputKeyCountPerMinute = 0; 1937c804472Sopenharmony_ci inputMethodCountPerMinute = 0; 1947c804472Sopenharmony_ci} 1957c804472Sopenharmony_ci 1967c804472Sopenharmony_ci 1977c804472Sopenharmony_civoid VirtualScreen::SetLoadDocFlag(VirtualScreen::LoadDocType flag) 1987c804472Sopenharmony_ci{ 1997c804472Sopenharmony_ci startLoadDoc = flag; 2007c804472Sopenharmony_ci} 2017c804472Sopenharmony_ci 2027c804472Sopenharmony_ciVirtualScreen::LoadDocType VirtualScreen::GetLoadDocFlag() const 2037c804472Sopenharmony_ci{ 2047c804472Sopenharmony_ci return startLoadDoc; 2057c804472Sopenharmony_ci} 2067c804472Sopenharmony_ci 2077c804472Sopenharmony_ciint VirtualScreen::GetJpgQualityValue(int32_t width, int32_t height) const 2087c804472Sopenharmony_ci{ 2097c804472Sopenharmony_ci long long pixCount = static_cast<long long>(width) * static_cast<long long>(height); 2107c804472Sopenharmony_ci if (pixCount <= static_cast<int>(JpgPixCountLevel::LOWCOUNT)) { 2117c804472Sopenharmony_ci return static_cast<int>(JpgQualityLevel::HIGHLEVEL); 2127c804472Sopenharmony_ci } else if (pixCount > static_cast<int>(JpgPixCountLevel::LOWCOUNT) && 2137c804472Sopenharmony_ci pixCount <= static_cast<int>(JpgPixCountLevel::MIDDLECOUNT)) { 2147c804472Sopenharmony_ci return static_cast<int>(JpgQualityLevel::MIDDLELEVEL); 2157c804472Sopenharmony_ci } else if (pixCount > static_cast<int>(JpgPixCountLevel::MIDDLECOUNT) && 2167c804472Sopenharmony_ci pixCount <= static_cast<int>(JpgPixCountLevel::HIGHCOUNT)) { 2177c804472Sopenharmony_ci return static_cast<int>(JpgQualityLevel::LOWLEVEL); 2187c804472Sopenharmony_ci } else { 2197c804472Sopenharmony_ci return static_cast<int>(JpgQualityLevel::DEFAULTLEVEL); 2207c804472Sopenharmony_ci } 2217c804472Sopenharmony_ci} 2227c804472Sopenharmony_ci 2237c804472Sopenharmony_cistd::string VirtualScreen::GetFastPreviewMsg() const 2247c804472Sopenharmony_ci{ 2257c804472Sopenharmony_ci return fastPreviewMsg; 2267c804472Sopenharmony_ci} 2277c804472Sopenharmony_ci 2287c804472Sopenharmony_civoid VirtualScreen::SetFastPreviewMsg(const std::string msg) 2297c804472Sopenharmony_ci{ 2307c804472Sopenharmony_ci fastPreviewMsg = msg; 2317c804472Sopenharmony_ci} 2327c804472Sopenharmony_ci 2337c804472Sopenharmony_civoid VirtualScreen::SetDropFrameFrequency(const int32_t& value) 2347c804472Sopenharmony_ci{ 2357c804472Sopenharmony_ci dropFrameFrequency = value; 2367c804472Sopenharmony_ci startDropFrameTime = std::chrono::system_clock::now(); 2377c804472Sopenharmony_ci} 2387c804472Sopenharmony_ci 2397c804472Sopenharmony_cibool VirtualScreen::JudgeAndDropFrame() 2407c804472Sopenharmony_ci{ 2417c804472Sopenharmony_ci if (dropFrameFrequency <= 0) { 2427c804472Sopenharmony_ci return false; 2437c804472Sopenharmony_ci } 2447c804472Sopenharmony_ci auto endTime = std::chrono::system_clock::now(); 2457c804472Sopenharmony_ci int64_t timePassed = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - 2467c804472Sopenharmony_ci startDropFrameTime).count(); 2477c804472Sopenharmony_ci if (timePassed >= dropFrameFrequency) { 2487c804472Sopenharmony_ci startDropFrameTime = std::chrono::system_clock::now(); 2497c804472Sopenharmony_ci } 2507c804472Sopenharmony_ci return timePassed < dropFrameFrequency; 2517c804472Sopenharmony_ci} 2527c804472Sopenharmony_ci 2537c804472Sopenharmony_cibool VirtualScreen::JudgeStaticImage(const int duration) 2547c804472Sopenharmony_ci{ 2557c804472Sopenharmony_ci if (CommandParser::GetInstance().GetScreenMode() == CommandParser::ScreenMode::STATIC) { 2567c804472Sopenharmony_ci if (VirtualScreen::isOutOfSeconds) { 2577c804472Sopenharmony_ci return false; 2587c804472Sopenharmony_ci } 2597c804472Sopenharmony_ci if (VirtualScreen::isStartCount) { 2607c804472Sopenharmony_ci VirtualScreen::isStartCount = false; 2617c804472Sopenharmony_ci VirtualScreen::startTime = std::chrono::system_clock::now(); 2627c804472Sopenharmony_ci } 2637c804472Sopenharmony_ci auto endTime = std::chrono::system_clock::now(); 2647c804472Sopenharmony_ci int64_t timePassed = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - 2657c804472Sopenharmony_ci VirtualScreen::startTime).count(); 2667c804472Sopenharmony_ci if (timePassed > duration) { 2677c804472Sopenharmony_ci VirtualScreen::isOutOfSeconds = true; 2687c804472Sopenharmony_ci return false; 2697c804472Sopenharmony_ci } 2707c804472Sopenharmony_ci } 2717c804472Sopenharmony_ci return true; 2727c804472Sopenharmony_ci} 2737c804472Sopenharmony_ci 2747c804472Sopenharmony_cibool VirtualScreen::StopSendStaticCardImage(const int duration) 2757c804472Sopenharmony_ci{ 2767c804472Sopenharmony_ci if (CommandParser::GetInstance().IsStaticCard()) { 2777c804472Sopenharmony_ci static bool first = true; 2787c804472Sopenharmony_ci if (first) { 2797c804472Sopenharmony_ci first = false; 2807c804472Sopenharmony_ci VirtualScreen::staticCardStartTime = std::chrono::system_clock::now(); 2817c804472Sopenharmony_ci } 2827c804472Sopenharmony_ci auto endTime = std::chrono::system_clock::now(); 2837c804472Sopenharmony_ci int64_t timePassed = std::chrono::duration_cast<std::chrono::milliseconds>(endTime - 2847c804472Sopenharmony_ci VirtualScreen::staticCardStartTime).count(); 2857c804472Sopenharmony_ci if (timePassed > duration) { 2867c804472Sopenharmony_ci return true; 2877c804472Sopenharmony_ci } 2887c804472Sopenharmony_ci } 2897c804472Sopenharmony_ci return false; 2907c804472Sopenharmony_ci} 2917c804472Sopenharmony_ci 2927c804472Sopenharmony_civoid VirtualScreen::RgbToJpg(unsigned char* data, const int32_t width, const int32_t height) 2937c804472Sopenharmony_ci{ 2947c804472Sopenharmony_ci if (width < 1 || height < 1) { 2957c804472Sopenharmony_ci FLOG("VirtualScreenImpl::RgbToJpg the width or height is invalid value"); 2967c804472Sopenharmony_ci } 2977c804472Sopenharmony_ci jpeg_compress_struct jpeg = {0}; 2987c804472Sopenharmony_ci jpeg_error_mgr jerr; 2997c804472Sopenharmony_ci jpeg.err = jpeg_std_error(&jerr); 3007c804472Sopenharmony_ci jpeg_create_compress(&jpeg); 3017c804472Sopenharmony_ci jpeg_mem_dest(&jpeg, &jpgScreenBuffer, &jpgBufferSize); 3027c804472Sopenharmony_ci jpeg.image_width = width; 3037c804472Sopenharmony_ci jpeg.image_height = height; 3047c804472Sopenharmony_ci jpeg.input_components = jpgPix; 3057c804472Sopenharmony_ci jpeg.in_color_space = JCS_RGB; 3067c804472Sopenharmony_ci jpeg_set_defaults(&jpeg); 3077c804472Sopenharmony_ci jpeg_set_quality(&jpeg, GetJpgQualityValue(width, height), TRUE); 3087c804472Sopenharmony_ci jpeg_start_compress(&jpeg, TRUE); 3097c804472Sopenharmony_ci JSAMPROW rowPointer[1]; 3107c804472Sopenharmony_ci int rowStride = width * jpgPix; 3117c804472Sopenharmony_ci while (jpeg.next_scanline < jpeg.image_height) { 3127c804472Sopenharmony_ci rowPointer[0] = &data[jpeg.next_scanline * rowStride]; 3137c804472Sopenharmony_ci jpeg_write_scanlines(&jpeg, rowPointer, 1); 3147c804472Sopenharmony_ci } 3157c804472Sopenharmony_ci jpeg_finish_compress(&jpeg); 3167c804472Sopenharmony_ci jpeg_destroy_compress(&jpeg); 3177c804472Sopenharmony_ci} 3187c804472Sopenharmony_ci 3197c804472Sopenharmony_civoid VirtualScreen::SetFoldable(const bool value) 3207c804472Sopenharmony_ci{ 3217c804472Sopenharmony_ci foldable = value; 3227c804472Sopenharmony_ci} 3237c804472Sopenharmony_ci 3247c804472Sopenharmony_cibool VirtualScreen::GetFoldable() const 3257c804472Sopenharmony_ci{ 3267c804472Sopenharmony_ci return foldable; 3277c804472Sopenharmony_ci} 3287c804472Sopenharmony_ci 3297c804472Sopenharmony_civoid VirtualScreen::SetFoldStatus(const std::string& value) 3307c804472Sopenharmony_ci{ 3317c804472Sopenharmony_ci foldStatus = value; 3327c804472Sopenharmony_ci} 3337c804472Sopenharmony_ci 3347c804472Sopenharmony_cistd::string VirtualScreen::GetFoldStatus() const 3357c804472Sopenharmony_ci{ 3367c804472Sopenharmony_ci return foldStatus; 3377c804472Sopenharmony_ci} 3387c804472Sopenharmony_ci 3397c804472Sopenharmony_civoid VirtualScreen::SetFoldResolution(int32_t changedFoldWidth, int32_t changedFoldHeight) 3407c804472Sopenharmony_ci{ 3417c804472Sopenharmony_ci foldWidth = changedFoldWidth; 3427c804472Sopenharmony_ci foldHeight = changedFoldHeight; 3437c804472Sopenharmony_ci} 3447c804472Sopenharmony_ci 3457c804472Sopenharmony_ciint32_t VirtualScreen::GetFoldWidth() const 3467c804472Sopenharmony_ci{ 3477c804472Sopenharmony_ci return foldWidth; 3487c804472Sopenharmony_ci} 3497c804472Sopenharmony_ci 3507c804472Sopenharmony_ciint32_t VirtualScreen::GetFoldHeight() const 3517c804472Sopenharmony_ci{ 3527c804472Sopenharmony_ci return foldHeight; 3537c804472Sopenharmony_ci} 3547c804472Sopenharmony_ci 3557c804472Sopenharmony_civoid VirtualScreen::SetCurrentResolution(int32_t width, int32_t height) 3567c804472Sopenharmony_ci{ 3577c804472Sopenharmony_ci currentWidth = width; 3587c804472Sopenharmony_ci currentHeight = height; 3597c804472Sopenharmony_ci} 3607c804472Sopenharmony_ci 3617c804472Sopenharmony_ciint32_t VirtualScreen::GetCurrentWidth() const 3627c804472Sopenharmony_ci{ 3637c804472Sopenharmony_ci return currentWidth; 3647c804472Sopenharmony_ci} 3657c804472Sopenharmony_ci 3667c804472Sopenharmony_ciint32_t VirtualScreen::GetCurrentHeight() const 3677c804472Sopenharmony_ci{ 3687c804472Sopenharmony_ci return currentHeight; 3697c804472Sopenharmony_ci} 3707c804472Sopenharmony_ci 3717c804472Sopenharmony_civoid VirtualScreen::InitFlushEmptyTime() {} 3727c804472Sopenharmony_ci 3737c804472Sopenharmony_civoid VirtualScreen::InitResolution() 3747c804472Sopenharmony_ci{ 3757c804472Sopenharmony_ci CommandInfo commandInfo; 3767c804472Sopenharmony_ci CommandParser::GetInstance().GetCommandInfo(commandInfo); 3777c804472Sopenharmony_ci SetOrignalWidth(commandInfo.orignalResolutionWidth); 3787c804472Sopenharmony_ci SetOrignalHeight(commandInfo.orignalResolutionHeight); 3797c804472Sopenharmony_ci SetCompressionWidth(commandInfo.compressionResolutionWidth); 3807c804472Sopenharmony_ci SetCompressionHeight(commandInfo.compressionResolutionHeight); 3817c804472Sopenharmony_ci SetCurrentResolution(commandInfo.orignalResolutionWidth, commandInfo.orignalResolutionHeight); 3827c804472Sopenharmony_ci}