Commit Graph

99 Commits

Author SHA1 Message Date
James Chen 15ef80e27d [big refactoring] Audio latency fix for Android. Support to preload effects on Android now. (#15875)
* Audio latency fix for Android. Support preload effects on Android now.

Squashed commits:
[b6d80fe] log fix
[a0a918e] Fixes assetFd didn't be released while PcmData is returned from cache.
[4b956ba] Potential crash fix for PcmAudioPlayer while pause / resume.
[398ab8c] Updates LOG_TAG position in AudioEngine-inl.cpp
[e3634e7] include stdlib.h for posix_memalign
[9004074] fixes setVolume logical error.
[c96df46] Don't use another thread for mixing, enqueue is in a seperated thread, therefore doing mixing in another thread will waste more time.
[0a4c1a8] Adds setLoop, setVolume, setPostion support for Track
[c35fb20] Fixed include.
[cdd9d32] Do mixing by ourself. (TO BE POLISHED)
[6447025] µ -> u since µ could not be shown on some android devices.
[97be0c6] Don't send a silence clip.
[c1607ed] Make linter.py happy.
[0898b54] Puts enqueue & SetPlayState in PcmAudioPlayer::play to thread pool.
[b79fc01] Adds getDuration, getPosition support for PcmAudioPlayer
[80fa2ab] minor fix of the code position of resetting state to State::INITIALIZED
[d9c62f1] underrun fix for PcmAudioPlayer.
[9c2212a] UrlAudioPlayer, playOverMutex should be static, and should be used in update method.
[1519d2e] static variables
[19da936] _pcmAudioPlayer Null pointer check in AudioPlayerProvider.
[e6b0d14] Updates audio performance test.
[fc01dd4] Registers foreground & background event in AudioEngine-inl.cpp(android), the callback should invoke `provider`'s pause & resume method.
[e00a886] TBD: Pause & resume support for PcmAudioPlayerPool.
Since OpenSLES audio resources are expensive and device shared, we should delete all unused PcmAudioPlayers in pool while pause and re-create them while resume.
But this commit isn't finished yet, I don't find a better way to register pause&resume event in AudioEngine module.
[9e42ea3] Interleave mono audio to stereo audio. PcmAudioPlayerPool only contains PcmAudioPlayers with 2 channels.
[3f18d05] Adds a strategy for checking small size of different file formats.
[753ff49] Adds performance test for AudioEngine.
[09d3045] Releases an extra PcmAudioPlayer for UrlAudioPlayer while allocating PcmAudioPlayer fails.
[9dd4477] Using std::move for PcmData move constructor & move assignment.
[6ca3bcb] some fixes:
1) new -> new (std::nothrow)
2) break if allocate PcmAudioPlayer fails
3) renames 'initForPlayPcmData' to 'init'
4) PcmAudioPlayer destructor deadlock if 'init' failed
[54675b6] include path fix.
[a1903ca] More refactorings.
[19b9498] Makes linter.py happy. :)
[923c530] Fixes:
1) Avoid getFileInfo to be invoked twice
2) A critical bug fix for UrlAudioPlayer and adds detailed comments
3) __clang__ compiler option fix for AudioResamplerSinc.cpp.
[5ec4faf] minor fix.
[faaa0f3] output a log in the destructor of UrlAudioPlayer.
[9c20355] NewAudioEngineTest,TestControll crash fix.
[f114464] fixes an unused import.
[1dc5dab] Better algorithm for allocating PcmAudioPlayer.
[331a213] minor fix.
[e54084a] null -> nullptr
[f9a0389] Support uncache.
[89a364f] Removes unused update, and TODO uncache functionality.
[1732bf9] Supports AudioEngineImpl::setFinishCallback for android.
[43d1596] UrlAudioPlayer::stop fix.
[e2ee941] Test case fix in NewAudioEngineTest/AudioIssue11143Test
[5c5ba01] More fixes for making cpp-tests/New Audio Engine Test happy.
[8b554a3] Adds log while remove player from map.
[ed71322] If original file is larger than 30k bytes, consider it's a large audio file.
[fb1845a] Updates project.properties
[6f3839f] minor log output fix in AudioEngine-inl.cpp
[c68bc6c] Don't resample if the sample rate of the decoded pcm data matchs the device's.
[43ca45f] PcmAudioPlayers also need to be removed while they play over, but should not be deleted since their lifecycle is managed by PcmAudioPlayerPool.
[f5e63c9] Audio latency fix for Android. Support preload effects on Android now.

* Supports to loading audio files asynchronously.

* Crash fix for stop audio right after play2d.

* Minor fix for logic in AudioMixerController.cpp

* Adds missing files (CCThreadPool.h/.cpp).

* Minor fix for including.

* Minor fix for missing include <functional> in Track.h

* update license information in audio.h

* Don't use std::future/std::promise anymore since ndk counldn't support it well in armeabi arch.

* isSmallFile postion updated, fixes large audio file goto the checking logic of cache.

* std::atomic<int> isn't supported by ndk-r10e while compiling with `armeabi` arch, using a int with a mutex instead.

* fixes __isnanf & posix_memalign doesn't exist on low api (<=16) devices.

* namespace updated: cocos2d -> cocos2d::experimental

* Removes commented code in AudioMixerController.h/.cpp

* Removes unused code again, and fixes a memory leak of `Track` instance.

* Oops, namespace changed.

* Only outputs log in debug mode.

* Uses ALOGV for outputing logs in AudioEngine-inl.cpp

* const PcmData& ->  PcmData for Track

* Fixes a protential crash in NewAudioEngineTest

* Adds `COCOS` prefix in header #ifndef COCOS_BALABALA #define COCOS_BALABALA

* Uses _ prefix for cocos code style instead of `m` prefix.

* Deletes AudioResamplerSinc related files.

* Bug fix from @minggo's reply on github.

* Don't need to invoke pause after in UrlAudioPlayer::prepare.

* Updates ThreadPool class, uses enum class and adds const keyword.
2016-07-18 10:22:40 +08:00
minggo bbd837aefa merge v3.12 back to v3 2016-06-28 17:53:50 +08:00
mogemimi cbc0612306 Use nullptr instead of 0 or NULL 2016-06-23 12:39:23 +09:00
minggo 465da95c01 return true for preload though it is not implemented 2016-06-22 17:41:04 +08:00
Adrien de Sentenac 1a76c9ea3b Add OBB (zip) support (#15515)
* Add OBB support.
OBB must be a zip file with audio and video files stored uncompressed.

* Use introspection to be able to build with Android API level 10.
Using the new audio engine to play sounds from the OBB will only work with API level 12 (Android 3.1) or above.
2016-05-04 09:21:35 +08:00
minggo bb4a54b042 use fullpath to play background music 2016-04-26 15:59:30 +08:00
Xpol Wan 90456d29ba Fixes 1605 include path in 541 files
using the tools/coding-style/include-linter.py with -f options.
2016-03-20 21:53:44 +08:00
Ricardo Quesada 028f8c28e1 Squashed commit of the following:
commit 59e43a3c80f4af8998e4a14f6463bd7a91617d5f
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Wed Mar 2 15:19:48 2016 -0800

    uses new naming convention for projects

    uses _ instead of -

commit f97ba56608d48b17909649c8617ba9047b566196
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Wed Mar 2 14:49:22 2016 -0800

    fooling cmake for real

commit 20c2560f75eab952e5131b484284bf20cb07fe07
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Wed Mar 2 14:43:05 2016 -0800

    fooling cmake

commit a0ada44bc82941830f6c71219a1492d28c28c306
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Wed Mar 2 14:26:59 2016 -0800

    makes CMake for Mac happy

commit 656b4f5e2dd741215a4699db979fe1b0dce60298
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Wed Mar 2 13:50:15 2016 -0800

    linux fix

commit fa98aeac8505c764f4a69f15c8a8ff1123fad2a3
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Wed Mar 2 11:18:18 2016 -0800

    links correctly!

commit 9c56ce7143d3a35b44d33f246cec093ca9eaa7d9
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Tue Mar 1 17:44:58 2016 -0800

    Squashed commit of the following:

    commit 2ef52723dae44204c047cb177d5a5670fb659c79
    Merge: 8a5c998 25cf1f1
    Author: Ricardo Quesada <ricardoquesada@gmail.com>
    Date:   Tue Mar 1 16:54:04 2016 -0800

        Merge branch 'v3' into cmake_android

    commit 8a5c9981192e344fffc9f14be5cb14f66eccfa24
    Author: Chaoren Lin <chaorenl@google.com>
    Date:   Thu Feb 11 18:34:46 2016 -0800

        Fix module name in Android template to match CMake project.

    commit be85e19e852a9d5fbd6c58cea60c75fe47a5a576
    Author: Chaoren Lin <chaorenl@google.com>
    Date:   Thu Feb 11 18:27:45 2016 -0800

        Add missing platform specific source file to CMake project.

    commit 705389ac6582107a381d0cbc56268eaa98ffc5c3
    Author: Chaoren Lin <chaorenl@google.com>
    Date:   Wed Feb 10 19:21:12 2016 -0800

        Find AndroidNdkModules.cmake relative to android.toolchain.cmake.

    commit a10075e2cb30af2e1f9a30da99efac880658ad6b
    Author: Chaoren Lin <chaorenl@google.com>
    Date:   Wed Feb 10 19:03:11 2016 -0800

        Remove cpp-empty-test from project templates.

    commit e070fcbf210b8628f75785e738202a80a95ac0ff
    Author: WenhaiLin <wenhai.lin@chukong-inc.com>
    Date:   Mon Aug 31 09:56:03 2015 +0800

        Fix CMake for Android Target
2016-03-02 16:51:54 -08:00
mogemimi 4c1c238f74 Fix format string warnings 2016-02-15 01:41:08 +09:00
Wenhai Lin 718d2c690b Remove CocosPlayClient 2016-01-18 17:58:04 +08:00
fnz c4b995fe59 updates to JniHelper, refactoring of existing JNI calls 2015-11-27 12:00:33 +03:00
WenhaiLin 2deeee70d2 CppTests-->Extension-->CocosBuilderTest:Fixed crash on Android 5.0.x. 2015-08-10 22:41:18 +08:00
WenhaiLin 102020d831 1.AudioEngine:support callback for preload feature.
2.AudioEngineThreadPool:Make the number of thread be a fixed number.
2015-07-28 15:27:07 +08:00
WenhaiLin eca192f7a6 Fixed compile error 2015-07-10 14:43:28 +08:00
Wenhai Lin 1875829ab4 [CppTests:ExtensionsTest-->CocoStudioComponentsTest]Fixed crash on Android 5.0.x 2015-06-26 10:16:52 +08:00
WenhaiLin 9c31aafba0 Fixed SimpleAudioEngine::playEffect() lagged on Android 5.0.x 2015-05-29 14:52:25 +08:00
Wenhai Lin 17f2fcd201 Add more comment. 2015-05-19 11:01:23 +08:00
WenhaiLin 07f5ec755a AudioEngine:Fixed program may freeze if `AudioEngine::stop(int audioID)` or `AudioEngine::stopAll()` is invoked frequently on Android. 2015-05-08 18:29:45 +08:00
andyque db95034798 fix android compile error 2015-05-07 10:37:19 +08:00
Krishna 35403439f3 Fixed compilation issue. Introduced missing CLASS_NAME 2015-03-04 10:48:30 +01:00
Krishna ec3a8d49f9 Fixed compilation error. 2015-03-04 10:43:31 +01:00
Krishna 58df860b4e Made the loadeffect utility method into a static method. Removed declaration of old method from header file 2015-02-26 06:53:20 +01:00
Krishna 3b54af1763 Introduced missing function declarators 2015-02-25 10:26:59 +01:00
Krishna Narasimhan 80ea81884b Source refactor. Corrected compile issue 2015-02-23 13:01:19 +01:00
Krishna Narasimhan 239a5f307f Sourcr Refactor. Abstracted common functionality from two jni methods and saved space/resources 2015-02-23 10:20:12 +01:00
WenhaiLin 5fd9ccfecb Fixed AudioEngine causes game 'freeze' on Android 2015-01-21 16:18:47 +08:00
Wenhai Lin 58c45ca144 Integrate CocosPlayClient 2015-01-13 17:30:07 +08:00
raydelto e20c347767 Fixing typo in the constant INVAILD_AUDIO_ID of the new AudioEngine, changing it to INVALID_AUDIO_ID 2014-12-31 20:51:45 -04:00
Dhilan007 249d34b707 fix AudioEngine can't looping audio on Android 2.3.x 2014-11-13 11:28:08 +08:00
Dhilan007 c66348435c Fixed incorrect file path of audio resource in AudioEngine on Android. 2014-10-21 18:34:05 +08:00
Dhilan007 ed9c8b2693 fix audio issues(log output:Too Many Objects) after play audio many times. 2014-09-30 15:00:52 +08:00
Dhilan007 9942206c53 move AudioEngine in cocos2d:experimental namespace 2014-09-16 10:22:25 +08:00
Dhilan007 39a8b8d5ea Fix a potential crash in AudioEngine on Android. 2014-09-15 17:36:00 +08:00
Dhilan007 1d43c6ec82 Fix name of variables and coding style. 2014-09-10 17:12:46 +08:00
Dhilan007 e45a4ff1bd 1.Fix name of variables.
2.Fix control of volume on android.
2014-09-10 13:47:17 +08:00
Dhilan007 6b4b5ed943 Refactoring API:
1.Remove Singleton Pattern
2.Make AudioProfile clear.
2014-09-05 11:13:51 +08:00
Dhilan007 d5c023740f Implement logical codes of new audio engine on android. 2014-09-03 18:19:47 +08:00
samuele3hu 3d5f8de346 Adjust android.mk for cocos2d and related module 2014-08-27 20:58:32 +08:00
samuele3hu 3759648d3a Remove the useless aneroid.mk files 2014-08-27 10:21:47 +08:00
minggo 6cc600ccce fix compiling warnings 2014-07-03 11:43:56 +08:00
Ricardo Quesada 0f67247325 Squashed commit of the following:
commit a794d107ad85667e3d754f0b6251fc864dfbf288
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Fri May 16 14:33:49 2014 -0700

    Yeah... everything compiles on win32 and wp8

commit 4740be6e4a0d16f742c27996e7ab2c100adc76af
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Fri May 16 13:58:38 2014 -0700

    CCIME moved to base

    and compiles on Android

commit ff3e1bf1eb27a01019f4e1b56d1aebbe2d385f72
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Fri May 16 13:02:57 2014 -0700

    compiles Ok for Windows Phone 8

commit 8160a4eb2ecdc61b5bd1cf56b90d2da6f11e3ebd
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Fri May 16 12:25:31 2014 -0700

    fixes for Windows Phone 8

commit 418197649efc93032aee0adc205e502101cdb53d
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Fri May 16 11:15:13 2014 -0700

    Compiles on Win32

commit 08813ed7cf8ac1079ffadeb1ce78ea9e833e1a33
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Fri May 16 10:08:31 2014 -0700

    Compiles on linux!

commit 118896521e5b335a5257090b6863f1fb2a2002fe
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Fri May 16 09:30:42 2014 -0700

    moves cocos/2d/platform -> cocos/platform

commit 4fe9319d7717b0c1bccb2db0156eeb86255a89e0
Merge: bd68ec2 511295e
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Fri May 16 08:24:41 2014 -0700

    Merge remote-tracking branch 'cocos2d/v3' into files

commit bd68ec2f0e3a826d8b2f4b60564ba65ce766bc56
Author: Ricardo Quesada <ricardoquesada@gmail.com>
Date:   Thu May 15 19:36:23 2014 -0700

    files in the correct directory
2014-05-16 14:36:00 -07:00
Huabing.Xu e6f7854225 clean for kazmath in project file 2014-04-28 13:14:22 +08:00
Huabing.Xu 685b9ea297 android can work now 2014-04-11 12:02:56 +08:00
James Chen 9d8d256bee issue #4729: Android build works ok. 2014-04-10 00:36:42 +08:00
Dhilan007 d310d8d099 closed #4659:Remove the usage of OpenSL 2014-04-09 14:57:07 +08:00
Ricardo Quesada c63f210e26 Compiles on Android 2014-03-04 16:59:39 -08:00
walzer d4c1aa92d5 add copyrights for 2014, in folders other then 2d. 2014-01-07 11:47:11 +08:00
minggo 95acb1b9e3 issue #2905: helloworld build ok on android 2013-10-14 14:01:00 +08:00
minggo 4313c46e93 issue #2905:adjust folder structure 2013-10-12 11:22:05 +08:00