Skip to content

ohos code optimization #20865

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 14, 2025
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,8 @@ project.properties
/external/jpeg/
/external/json/
/external/linux-specific/
/external/ohos-specific/
/external/openssl
/external/lua/
/external/png/
/external/sqlite3/
Expand Down
4 changes: 4 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@
[submodule "tests/cpp-tests/Resources/ccs-res"]
path = tests/cpp-tests/Resources/ccs-res
url = git://github.com/dumganhar/ccs-res.git
[submodule "tests/cpp-tests/proj.ohos"]
path = tests/cpp-tests/proj.ohos
url = [email protected]:cocos2d/cocos2d-x-tests-harmonyos-next-project.git
branch = cpp-tests
21 changes: 16 additions & 5 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,18 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/external
)

if(OHOS)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/cocos/platform/ohos
${CMAKE_CURRENT_SOURCE_DIR}/external/freetype2/include/ohos
${CMAKE_CURRENT_SOURCE_DIR}/external/freetype2/include/ohos/freetype2
${CMAKE_CURRENT_SOURCE_DIR}/external/tinyxml2
${CMAKE_CURRENT_SOURCE_DIR}/external/unzip
${CMAKE_CURRENT_SOURCE_DIR}/external/webp/include/ohos
${CMAKE_CURRENT_SOURCE_DIR}/external/png/include/ohos
${CMAKE_CURRENT_SOURCE_DIR}/external/tiff/include/ohos
)
endif()
if(USE_PREBUILT_LIBS)
include(CocosUsePrebuiltLibs)
endif()
Expand Down Expand Up @@ -360,10 +372,7 @@ message(STATUS "Flatbuffers include dirs: ${FLATBUFFERS_INCLUDE_DIRS}")
add_subdirectory(external/xxhash)
set(XXHASH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/external/xxhash)
set(XXHASH_LIBRARIES xxhash)
if(OHOS)
add_subdirectory(external/ohos-specific/pvmp3dec)
add_subdirectory(external/ohos-specific/tremolo)
endif()

# libcocos2d.a
add_subdirectory(cocos)

Expand All @@ -383,7 +392,9 @@ if(!OHOS)
# build lua tests
if(BUILD_LUA_TESTS)
add_subdirectory(tests/lua-tests/project)
add_subdirectory(tests/lua-empty-test/project)
if(!OHOS)
add_subdirectory(tests/lua-empty-test/project)
endif()
endif(BUILD_LUA_TESTS)
endif()
endif(BUILD_LUA_LIBS)
4 changes: 2 additions & 2 deletions cmake/Modules/CocosBuildHelpers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ endfunction()
#IOS = iOS
#MACOSX = MacOS X
#LINUX = Linux
#OHOS = OpenHarmonyOS
#OHOS = HarmonyOS Next OS
if (${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if(WINRT)
set(SYSTEM_STRING "Windows RT")
Expand All @@ -140,7 +140,7 @@ elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(SYSTEM_STRING "Mac OSX")
endif()
elseif(OHOS)
set(SYSTEM_STRING "OpenHarmony")
set(SYSTEM_STRING "HarmonyOS Next OS")
endif()

if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
Expand Down
20 changes: 4 additions & 16 deletions cocos/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -179,22 +179,10 @@ elseif(OHOS)
target_link_libraries(cocos2d ${PLATFORM_SPECIFIC_LIBS} ${glfw_other_linker_flags})

cocos_use_pkg(cocos2d OPENSSL)
target_link_libraries(cocos2d
ext_pvmp3dec
ext_tremolo
${Drawing-lib}
${libace-lib}
${GLES-lib}
${libnapi-lib}
${libuv-lib}
${rawfile-lib}
${EGL-lib}
${hilog-lib}
libohaudio.so
libavplayer.so
libnative_window.so
libnative_buffer.so
)
target_link_libraries(cocos2d ${Drawing-lib} ${libace-lib} ${GLES-lib} ${libnapi-lib} ${libuv-lib} ${rawfile-lib}
${EGL-lib} ${hilog-lib} libohaudio.so libavplayer.so libnative_window.so libnative_buffer.so
libnative_display_manager.so libohsensor.so libnative_media_codecbase.so libnative_media_core.so
libnative_media_acodec.so libnative_media_avdemuxer.so libnative_media_avsource.so)
else()
message( FATAL_ERROR "Unsupported platform, CMake will exit" )
target_link_libraries(cocos2d ${PLATFORM_SPECIFIC_LIBS} ${glfw_other_linker_flags})
Expand Down
8 changes: 3 additions & 5 deletions cocos/audio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -51,21 +51,19 @@ elseif(OHOS)
audio/ohos/AssetFd.cpp
audio/ohos/AudioDecoder.cpp
audio/ohos/AudioDecoderProvider.cpp
audio/ohos/AudioDecoderSLES.cpp
audio/ohos/AudioDecoderOgg.cpp
audio/ohos/AudioDecoderMp3.cpp
audio/ohos/AudioDecoderWav.cpp
audio/ohos/AudioDecoderOH.cpp
audio/ohos/AudioPlayerProvider.cpp
audio/ohos/AudioResampler.cpp
audio/ohos/AudioResamplerCubic.cpp
audio/ohos/PcmBufferProvider.cpp
audio/ohos/PcmAudioPlayer.cpp
audio/ohos/PcmData.cpp
audio/ohos/PcmAudioService.cpp
audio/ohos/UrlAudioPlayer.cpp
audio/ohos/BigAudioPlayer.cpp
audio/ohos/BigAudioService.cpp
audio/ohos/AudioMixerController.cpp
audio/ohos/AudioMixer.cpp
audio/ohos/mp3reader.cpp
audio/ohos/tinysndfile.cpp
audio/ohos/Track.cpp
audio/ohos/audio_utils/RefCounted.cpp
Expand Down
21 changes: 20 additions & 1 deletion cocos/audio/ohos/AudioDecoder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,9 +75,10 @@ namespace cocos2d { namespace experimental {
ALOGV("~AudioDecoder() %p", this);
}

bool AudioDecoder::init(const std::string &url, int sampleRate) {
bool AudioDecoder::init(const std::string &url, int sampleRate, AudioPlayerProvider::AudioFileInfo fileInfo) {
_url = url;
_sampleRate = sampleRate;
_fileInfo = fileInfo;
return true;
}

Expand Down Expand Up @@ -121,6 +122,24 @@ namespace cocos2d { namespace experimental {
return ret;
}

bool AudioDecoder::asyncStart() {
auto oldTime = clockNow();
auto nowTime = oldTime;
bool ret;
do {
ret = decodeToPcm();
if (!ret) {
ALOGE("decodeToPcm (%s) failed!", _url.c_str());
break;
}

nowTime = clockNow();
ALOGD("Decoding (%s) to pcm data wasted %fms", _url.c_str(), intervalInMS(oldTime, nowTime));
} while (false);
ALOGV_IF(!ret, "%s returns false, decode (%s)", __FUNCTION__, _url.c_str());
return ret;
}

bool AudioDecoder::resample() {
if (_result.sampleRate == _sampleRate) {
ALOGI("No need to resample since the sample rate (%d) of the decoded pcm data is the same as the device output sample rate",
Expand Down
6 changes: 5 additions & 1 deletion cocos/audio/ohos/AudioDecoder.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ THE SOFTWARE.
#include "OpenSLHelper.h"
#include "PcmData.h"
#include "base/CCData.h"
#include "AudioPlayerProvider.h"

namespace cocos2d {
namespace experimental {
Expand All @@ -36,10 +37,12 @@ namespace cocos2d {
AudioDecoder();
virtual ~AudioDecoder();

virtual bool init(const std::string &url, int sampleRate);
virtual bool init(const std::string &url, int sampleRate, AudioPlayerProvider::AudioFileInfo fileInfo);

bool start();

bool asyncStart();

inline PcmData getResult() { return _result; };

protected:
Expand All @@ -52,6 +55,7 @@ namespace cocos2d {
static int fileClose(void *datasource);
static long fileTell(void *datasource); // NOLINT

AudioPlayerProvider::AudioFileInfo _fileInfo;
std::string _url;
PcmData _result;
int _sampleRate;
Expand Down
76 changes: 0 additions & 76 deletions cocos/audio/ohos/AudioDecoderMp3.cpp

This file was deleted.

41 changes: 0 additions & 41 deletions cocos/audio/ohos/AudioDecoderMp3.h

This file was deleted.

Loading