Skip to content
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

Explanation of special effect parameters of Histogram and Waveform and the desired effect #510

Open
wants to merge 20 commits into
base: master
Choose a base branch
from

Conversation

xiaodi86
Copy link

已按照实现其他特效的步骤,先新建了cgeHistogramFilter.h(cgeWaveformFilter.h)和cgeHistogramFilter.cpp(cgeWaveformFilter.cpp)文件,然后在cge.h,cgeAdvancedEffects.h,cgeAdvancedEffects.cpp,cgeDataParsingEngine.cpp,Android.mk进行配置,最后ndk-build并在MainActivity中的EFFECT_CONFIGS[]数组配置相应参数。

.h和.cpp文件中只配置了需要设置的参数与相应注释,及想要效果的说明。

@xiaodi86
Copy link
Author

在以center(x,y)为原点,宽xValue(value1),高yValue(value2),背景色为bgColor(0.0,0.0,0.0)的矩形框中绘制亮度表(直方图)或亮度波形图。如何在这个库的基础上使用GLSL实现?

@xiaodi86 xiaodi86 changed the title 亮度表与波形图特效参数及想要效果的说明 Explanation of special effect parameters of Histogram and Waveform and the desired effect Dec 27, 2022
@wysaid
Copy link
Owner

wysaid commented Dec 27, 2022

好的, 你想做的大概了解了。 其中 wave form 这个效果由于需要通过颜色来选择绘制的位置, 应该通过 Compute Shader 来做. 然后 Compute Shader 需要 GLES3.1 及以上的版本才支持, 然后 GLES3.1+ 基本上能覆盖绝大多数设备(在国内应该能覆盖 98%的安卓设备, 在国际范围内的话可以参考这个文档 https://developer.android.com/about/dashboards#OpenGL).
image

这个库有一段时间没更新了,我最近抽空大概更新一下, 支持一下 compute shader 就可以实现了。 对于不支持 compute shader 的设备, 你可以参考 "cgeColorMappingFilter" 这个效果的实现逻辑, 去读取 pixel 像素数据, 然后实现你想要的效果. 也就是说, wave form 这个效果, 最佳写法是用 compute shader 实现, 但为了兼容低端机, 你还需要一个基于 pixel 数据的版本. 你也可以只实现基于 pixel 数据的版本, 也能满足需求。
至于 histogram 这个效果, 涉及到频率统计, 无法用gpu计算, 同样可以参考 "cgeColorMappingFilter" 这个效果的逻辑来实现, 读取像素数据, 进行一些统计处理, 之后输出到图像。

然后 "cgeColorMappingFilter" 这个效果只是演示, 写得比较粗糙, 获取像素数据可以用 PBO swap 加速一下, 这个我近期优化一下。
最后, 你想实现你的两个效果的话, 可以着手参考 "cgeColorMappingFilter" 这个效果, 获取像素数据来处理了。

@wysaid
Copy link
Owner

wysaid commented Dec 27, 2022

总结一下就是: 你先通过参考 "cgeColorMappingFilter" 的使用行为, 自行尝试实现一下 这两个效果吧。
我这边近期抽空优化一下项目结构, 大致支持一下 Compute Shader, 实现这个 wave form 效果 (仅支持GLES3.1+的安卓设备).
然后像素读取这块也抽一个简单的封装,有类似需求的可以简单快速地使用。

@xiaodi86
Copy link
Author

好的,感谢回复,我先尝试参考 "cgeColorMappingFilter" 的使用实现一下。
当前我使用的数据直接在VideoPlayerGLSurfaceView用glReadPixels方法获取数据后只取红色数据当做亮度数据使用,然后通过数据的计算转换用画笔工具画出了两种特效,但会比较卡。

@wysaid
Copy link
Owner

wysaid commented Dec 28, 2022

那你可以先给出你的比较卡的实现, 然后我会在你的代码基础上告诉你如何优化

@xiaodi86
Copy link
Author

感谢回复,效果已更新到我的分支上,显示有点慢,效果比较卡。
另外发现一篇文章(https://www.coder.work/article/3304789)是关于C++实现histgram特效的,其中glGenVertexArrays()等方法也要用到你上面说的GLES30才能调用。

@wysaid
Copy link
Owner

wysaid commented Dec 31, 2022

感谢回复,效果已更新到我的分支上,显示有点慢,效果比较卡。 另外发现一篇文章(https://www.coder.work/article/3304789)是关于C++实现histgram特效的,其中glGenVertexArrays()等方法也要用到你上面说的GLES30才能调用。

跟这个没太大关系. 还没来得及看, 待会看看你这个。

@wysaid
Copy link
Owner

wysaid commented Jan 2, 2023

元旦偷懒没来得及看这个。 刚才试着跑了一下, 发现有编译问题:

image

在之前的版本是没有这个问题的。 你看看你那边是否也有类似的问题?

@xiaodi86
Copy link
Author

xiaodi86 commented Jan 3, 2023

感谢回复。你好,我将Histogram branch下载下来运行没有遇到类似问题,然后将代码更新到你的最新更新optimize/better_file_structure分支上也没有遇到类似问题。

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 2, 2023

大师兄好,已更新到最新版本,还是存在那个位置抢占问题,就是一段时间后会画满整张图片,请问这个问题是不是短期内很难解决啊?

@wysaid
Copy link
Owner

wysaid commented Feb 2, 2023

大师兄好,已更新到最新版本,还是存在那个位置抢占问题,就是一段时间后会画满整张图片,请问这个问题是不是短期内很难解决啊?

我这边没有遇到你说的问题, 所以我在问你用的什么手机。 你多用几个手机测一下。

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 3, 2023

大师兄好,我刚用四种手机测试了,测试情况如下:
魅族 MX6
存在位置抢占问题,就是一段时间后会画满整张图片

荣耀Play5 magic hjc-an90 播放器页面崩溃,报错
2023-02-03 09:31:45.010 21954-21954/? E/libc: Access denied finding property "persist.device_config.runtime_native.use_app_image_startup_cache"
2023-02-03 09:31:45.010 21954-21954/? E/.wysaid.cgeDem: LoadAppImageStartupCache enabled : 1
2023-02-03 09:31:45.010 21954-21954/? E/.wysaid.cgeDem: Unknown bits set in runtime_flags: 0x8000

Redmi Note 11 播放器页面崩溃,报错
2023-02-03 09:50:22.781 24439-24464/org.wysaid.cgeDemo E/libMiGL: libmigl:This GPU version is note support Variable Shading Rate
2023-02-03 09:50:22.797 24439-24464/org.wysaid.cgeDemo E/OpenGLRenderer: fbcNotifyFrameComplete error: undefined symbol: fbcNotifyFrameComplete
2023-02-03 09:50:22.797 24439-24464/org.wysaid.cgeDemo E/OpenGLRenderer: fbcNotifyNoRender error: undefined symbol: fbcNotifyNoRender

小米11LE
可以正常显示特效,没有问题。

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 3, 2023

会不会是ndk-build时armeabi类型的.so文件没有生成成功造成的,因为ndk-build时报错:
[armeabi] SharedLibrary : libCGE.so
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:66: error: undefined reference to '__atomic_store_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:66: error: undefined reference to '__atomic_store_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:66: error: undefined reference to '__atomic_store_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/include/memory:635: error: undefined reference to '__atomic_load_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:82: error: undefined reference to '__atomic_fetch_add_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:82: error: undefined reference to '__atomic_fetch_add_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:82: error: undefined reference to '__atomic_fetch_add_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:82: error: undefined reference to '__atomic_fetch_add_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:74: error: undefined reference to '__atomic_load_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/src/include/atomic_support.h:92: error: undefined reference to '__atomic_compare_exchange_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/../../external/libcxxabi/src/cxa_handlers.cpp:112: error: undefined reference to '__atomic_exchange_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/../../external/libcxxabi/src/cxa_default_handlers.cpp:106: error: undefined reference to '__atomic_exchange_4'
/usr/local/google/buildbot/src/android/ndk-r13-release/external/libcxx/../../external/libcxxabi/src/cxa_default_handlers.cpp:117: error: undefined reference to '__atomic_exchange_4'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [G:/android-gpuimage-plus-feature-histogram/library/src/main/obj/local/armeabi/libCGE.so] Error 1

@wysaid
Copy link
Owner

wysaid commented Feb 3, 2023

大师兄好,我刚用四种手机测试了,测试情况如下: 魅族 MX6 存在位置抢占问题,就是一段时间后会画满整张图片

荣耀Play5 magic hjc-an90 播放器页面崩溃,报错 2023-02-03 09:31:45.010 21954-21954/? E/libc: Access denied finding property "persist.device_config.runtime_native.use_app_image_startup_cache" 2023-02-03 09:31:45.010 21954-21954/? E/.wysaid.cgeDem: LoadAppImageStartupCache enabled : 1 2023-02-03 09:31:45.010 21954-21954/? E/.wysaid.cgeDem: Unknown bits set in runtime_flags: 0x8000

Redmi Note 11 播放器页面崩溃,报错 2023-02-03 09:50:22.781 24439-24464/org.wysaid.cgeDemo E/libMiGL: libmigl:This GPU version is note support Variable Shading Rate 2023-02-03 09:50:22.797 24439-24464/org.wysaid.cgeDemo E/OpenGLRenderer: fbcNotifyFrameComplete error: undefined symbol: fbcNotifyFrameComplete 2023-02-03 09:50:22.797 24439-24464/org.wysaid.cgeDemo E/OpenGLRenderer: fbcNotifyNoRender error: undefined symbol: fbcNotifyNoRender

小米11LE 可以正常显示特效,没有问题。

你试试 readme 页面的cmake的编译方式, 会自动更新ndk版本,你的ndk版本太低了。更新之后再试试

@wysaid
Copy link
Owner

wysaid commented Feb 5, 2023

  • Build with preset tasks: (Requires wsl/mingw/cygwin on Windows.)

    # define the environment variable "ANDROID_HOME"
    # If using Windows, define ANDROID_HOME in Windows Environment Settings by yourself.
    export ANDROID_HOME=/path/to/android/sdk
    
    # Setup Project
    bash vscode_tasks.sh --setup-project
    
    # Compile with CMake Debug
    bash vscode_tasks.sh --debug --enable-cmake --build
    # Compile with CMake Release
    bash vscode_tasks.sh --release --enable-cmake --build
    
    # Start Demo By Command
    bash vscode_tasks.sh --run

按这个试一下哈, 我这边试了几个手机, 没发现你说的问题, 甚至用模拟器跑了一下, 也没问题。 没有你说的那几个手机

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 6, 2023

大师兄好,我尝试了更新使用新版的NDK,也试了readme 页面的cmake的编译方式,还是存在上面同样的问题,详细情况已用邮件发送给您。
Build with preset tasks这种方式,不太了解wsl/mingw/cygwin这些软件,需要花点时间去学习了解。

@wysaid
Copy link
Owner

wysaid commented Feb 6, 2023

cgeDemo-debug.apk.zip

你的NDK版本太老了. 我在项目里面配置的是NDK23.
你试试我编译的这个版本是否有你说的问题吧。 试完了给个反馈

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 7, 2023

cgeDemo-debug.apk.zip

你的NDK版本太老了. 我在项目里面配置的是NDK23. 你试试我编译的这个版本是否有你说的问题吧。 试完了给个反馈

大师兄好,版本是不是发错了,这个版本里面没有波形图特效。

@wysaid
Copy link
Owner

wysaid commented Feb 7, 2023

cgeDemo-debug.apk.zip
你的NDK版本太老了. 我在项目里面配置的是NDK23. 你试试我编译的这个版本是否有你说的问题吧。 试完了给个反馈

大师兄好,版本是不是发错了,这个版本里面没有波形图特效。

oh 我重新来一个. 用成master分支了
cgeDemo-release.apk.zip

@wysaid
Copy link
Owner

wysaid commented Feb 7, 2023

cgeDemo-release.fix.zip

找到个低端机试了下, 是 clear 时序错了。 加了行 glFlush 修了。 你试试吧。 代码我也同步到对应的分支了

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 7, 2023

大师兄好,我NDK23、NDK23b、NDK23c几个版本都试过了,两个apk也安装测试了,对应机型还是同样的错误。
下面是荣耀Play5 magic hjc-an90 测试,播放器页面崩溃的报错
2023-02-07 12:21:38.604 22024-22024 AudioManager org.wysaid.cgeDemo V querySoundEffectsEnabled...
2023-02-07 12:21:38.625 22024-22143 libc org.wysaid.cgeDemo A Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 in tid 22143 (GLThread 25646), pid 22024 (.wysaid.cgeDemo)
2023-02-07 12:21:38.673 22024-22024 HwViewRootImpl org.wysaid.cgeDemo I removeInvalidNode all the node in jank list is out of time
2023-02-07 12:21:38.677 22195-22195 DEBUG pid-22195 A pid: 22024, tid: 22143, name: GLThread 25646 >>> org.wysaid.cgeDemo <<<
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #6 pc 00000000000992d0 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/lib/arm64/libCGE.so (CGE::CGEWaveformFilter::render2Texture(CGE::CGEImageHandlerInterface*, unsigned int, unsigned int)+296) (BuildId: a03008d0b4cf8596b44a81905cccfc4c85951f7e)
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #7 pc 00000000000947f0 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/lib/arm64/libCGE.so (CGE::CGEMutipleEffectFilter::render2Texture(CGE::CGEImageHandlerInterface*, unsigned int, unsigned int)+332) (BuildId: a03008d0b4cf8596b44a81905cccfc4c85951f7e)
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #8 pc 000000000009c720 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/lib/arm64/libCGE.so (CGE::CGEFastFrameHandler::processingFilters()+124) (BuildId: a03008d0b4cf8596b44a81905cccfc4c85951f7e)
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #9 pc 000000000009cc98 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/lib/arm64/libCGE.so (CGE::CGEFrameRenderer::runProc()+40) (BuildId: a03008d0b4cf8596b44a81905cccfc4c85951f7e)
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #10 pc 000000000000a4f4 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/oat/arm64/base.odex (deleted)
2023-02-07 12:21:38.918 22024-22024 libCGE_java org.wysaid.cgeDemo I activity onPause...
2023-02-07 12:21:38.919 22024-22024 libCGE_java org.wysaid.cgeDemo I Video player view release...
2023-02-07 12:21:38.919 22024-22024 libCGE_java org.wysaid.cgeDemo I surfaceview onPause ...
2023-02-07 12:21:38.951 1579-1806 InputDispatcher system_server E channel '351ce0a org.wysaid.cgeDemo/org.wysaid.cgeDemo.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2023-02-07 12:21:38.957 1579-1806 InputDispatcher system_server E channel 'cf95d91 org.wysaid.cgeDemo/org.wysaid.cgeDemo.VideoPlayerDemoActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2023-02-07 12:21:38.967 1579-16547 WindowManager system_server E win=Window{cf95d91 u0 org.wysaid.cgeDemo/org.wysaid.cgeDemo.VideoPlayerDemoActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true
2023-02-07 12:21:38.986 2195-2383 DollieAdapterService com.huawei.systemserver E notifyActivityState pkg:org.wysaid.cgeDemo/org.wysaid.cgeDemo.VideoPlayerDemoActivity state:20 fg:false mUid:10877
2023-02-07 12:21:39.149 2195-2383 DollieAdapterService com.huawei.systemserver E notifyActivityState pkg:org.wysaid.cgeDemo/org.wysaid.cgeDemo.MainActivity state:2 fg:true mUid:10877
2023-02-07 12:21:39.318 1579-1607 WindowManager system_server E win=Window{69d4143 u0 Splash Screen org.wysaid.cgeDemo EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true
2023-02-07 12:21:43.007 964-1139 HiEvent hiview E unsigned int)+296
/data/app/org.wysaid.cgeDemo/lib/arm64/libCGE.so (CGE length is 0 or exceed MAX: 32
2023-02-07 12:21:43.008 964-1139 HiEvent hiview E unsigned int)+332
/data/app/org.wysaid.cgeDemo/lib/arm64/libCGE.so (CGE length is 0 or exceed MAX: 32
2023-02-07 12:21:44.085 22201-22201 AwareBitmapCacher org.wysaid.cgeDemo I init lrucache size: 4194304 pid=22201

您说的低端机是指哪个型号?meizu MX6是16年发布的机型,测试和前面一样画面整个画面。

那边不方便调试,如果有需要,可以远程操作我的电脑调试。

1 similar comment
@xiaodi86
Copy link
Author

xiaodi86 commented Feb 7, 2023

大师兄好,我NDK23、NDK23b、NDK23c几个版本都试过了,两个apk也安装测试了,对应机型还是同样的错误。
下面是荣耀Play5 magic hjc-an90 测试,播放器页面崩溃的报错
2023-02-07 12:21:38.604 22024-22024 AudioManager org.wysaid.cgeDemo V querySoundEffectsEnabled...
2023-02-07 12:21:38.625 22024-22143 libc org.wysaid.cgeDemo A Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 in tid 22143 (GLThread 25646), pid 22024 (.wysaid.cgeDemo)
2023-02-07 12:21:38.673 22024-22024 HwViewRootImpl org.wysaid.cgeDemo I removeInvalidNode all the node in jank list is out of time
2023-02-07 12:21:38.677 22195-22195 DEBUG pid-22195 A pid: 22024, tid: 22143, name: GLThread 25646 >>> org.wysaid.cgeDemo <<<
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #6 pc 00000000000992d0 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/lib/arm64/libCGE.so (CGE::CGEWaveformFilter::render2Texture(CGE::CGEImageHandlerInterface*, unsigned int, unsigned int)+296) (BuildId: a03008d0b4cf8596b44a81905cccfc4c85951f7e)
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #7 pc 00000000000947f0 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/lib/arm64/libCGE.so (CGE::CGEMutipleEffectFilter::render2Texture(CGE::CGEImageHandlerInterface*, unsigned int, unsigned int)+332) (BuildId: a03008d0b4cf8596b44a81905cccfc4c85951f7e)
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #8 pc 000000000009c720 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/lib/arm64/libCGE.so (CGE::CGEFastFrameHandler::processingFilters()+124) (BuildId: a03008d0b4cf8596b44a81905cccfc4c85951f7e)
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #9 pc 000000000009cc98 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/lib/arm64/libCGE.so (CGE::CGEFrameRenderer::runProc()+40) (BuildId: a03008d0b4cf8596b44a81905cccfc4c85951f7e)
2023-02-07 12:21:38.678 22195-22195 DEBUG pid-22195 A #10 pc 000000000000a4f4 /data/app/org.wysaid.cgeDemo-ajz_SYIp-cM95x2YkOXdQw==/oat/arm64/base.odex (deleted)
2023-02-07 12:21:38.918 22024-22024 libCGE_java org.wysaid.cgeDemo I activity onPause...
2023-02-07 12:21:38.919 22024-22024 libCGE_java org.wysaid.cgeDemo I Video player view release...
2023-02-07 12:21:38.919 22024-22024 libCGE_java org.wysaid.cgeDemo I surfaceview onPause ...
2023-02-07 12:21:38.951 1579-1806 InputDispatcher system_server E channel '351ce0a org.wysaid.cgeDemo/org.wysaid.cgeDemo.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2023-02-07 12:21:38.957 1579-1806 InputDispatcher system_server E channel 'cf95d91 org.wysaid.cgeDemo/org.wysaid.cgeDemo.VideoPlayerDemoActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2023-02-07 12:21:38.967 1579-16547 WindowManager system_server E win=Window{cf95d91 u0 org.wysaid.cgeDemo/org.wysaid.cgeDemo.VideoPlayerDemoActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true
2023-02-07 12:21:38.986 2195-2383 DollieAdapterService com.huawei.systemserver E notifyActivityState pkg:org.wysaid.cgeDemo/org.wysaid.cgeDemo.VideoPlayerDemoActivity state:20 fg:false mUid:10877
2023-02-07 12:21:39.149 2195-2383 DollieAdapterService com.huawei.systemserver E notifyActivityState pkg:org.wysaid.cgeDemo/org.wysaid.cgeDemo.MainActivity state:2 fg:true mUid:10877
2023-02-07 12:21:39.318 1579-1607 WindowManager system_server E win=Window{69d4143 u0 Splash Screen org.wysaid.cgeDemo EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true
2023-02-07 12:21:43.007 964-1139 HiEvent hiview E unsigned int)+296
/data/app/org.wysaid.cgeDemo/lib/arm64/libCGE.so (CGE length is 0 or exceed MAX: 32
2023-02-07 12:21:43.008 964-1139 HiEvent hiview E unsigned int)+332
/data/app/org.wysaid.cgeDemo/lib/arm64/libCGE.so (CGE length is 0 or exceed MAX: 32
2023-02-07 12:21:44.085 22201-22201 AwareBitmapCacher org.wysaid.cgeDemo I init lrucache size: 4194304 pid=22201

您说的低端机是指哪个型号?meizu MX6是16年发布的机型,测试和前面一样画面整个画面。

那边不方便调试,如果有需要,可以远程操作我的电脑调试。

@wysaid
Copy link
Owner

wysaid commented Feb 7, 2023

cgeDemo-release.fix.zip

找到个低端机试了下, 是 clear 时序错了。 加了行 glFlush 修了。 你试试吧。 代码我也同步到对应的分支了

你先基于这个版本多测几个手机, 多提供几个你看到有问题的机型,我看看有没有我也有的。我没有魅族的MX6。
然后播放器页面不行, 相机页面是否也有问题, 也试试?

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 8, 2023

大师兄好,我把能借到的不同手机型号都做了测试,情况如下:
1、点击特效,存在位置抢占问题(一段时间后会画满整张图片)

手机型号:HONOR 30Pro(GPU Mali-G76) 、Meizu MX6(GPU Mali-T880 MP4)

共同点:GPU都是Mali

2、点击特效,播放器页面崩溃,报错

手机型号:HONOR Play5 Magic hjc-an90、Redmi Note 11、vivo X60、oppo Reno6 5G、Redmi K50Pro

共同点:都是联发科的天玑CPU,GPU也都是Mali
都报错:A Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 in tid 32611 (GLThread 40), pid 32443 (.wysaid.cgeDemo)
错误位置都指向这里:
/lib/arm64/libCGE.so (CGE::CGEWaveformFilter::render2Texture(CGE::CGEImageHandlerInterface*, unsigned int, unsigned int)
/lib/arm64/libCGE.so (CGE::CGEMutipleEffectFilter::render2Texture(CGE::CGEImageHandlerInterface*, unsigned int, unsigned int)

3、特效正常的有

手机型号:Mi 11LE、Nova Nam-AL00、Motorola Edge30、Meizu 17、腾讯黑鲨游戏手机3S
共同点:都是高通骁龙CPU,GPU也都是高通 Adreno

@wysaid
Copy link
Owner

wysaid commented Feb 8, 2023

大师兄好,我把能借到的不同手机型号都做了测试,情况如下: 1、点击特效,存在位置抢占问题(一段时间后会画满整张图片)

手机型号:HONOR 30Pro(GPU Mali-G76) 、Meizu MX6(GPU Mali-T880 MP4)

共同点:GPU都是Mali

2、点击特效,播放器页面崩溃,报错

手机型号:HONOR Play5 Magic hjc-an90、Redmi Note 11、vivo X60、oppo Reno6 5G、Redmi K50Pro

共同点:都是联发科的天玑CPU,GPU也都是Mali 都报错:A Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8 in tid 32611 (GLThread 40), pid 32443 (.wysaid.cgeDemo) 错误位置都指向这里: /lib/arm64/libCGE.so (CGE::CGEWaveformFilter::render2Texture(CGE::CGEImageHandlerInterface*, unsigned int, unsigned int) /lib/arm64/libCGE.so (CGE::CGEMutipleEffectFilter::render2Texture(CGE::CGEImageHandlerInterface*, unsigned int, unsigned int)

3、特效正常的有

手机型号:Mi 11LE、Nova Nam-AL00、Motorola Edge30、Meizu 17、腾讯黑鲨游戏手机3S 共同点:都是高通骁龙CPU,GPU也都是高通 Adreno

好的~ 我找几个手机测一下试试

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 9, 2023

大师兄好,像这种不兼容两种品牌处理器的情况,我考虑到了三种可能,GLSL精度不支持,GLSL 版本不支持或ABI的问题,我修改了GLSL的精度和版本,好像不能解决这个问题;再就是ABI问题,根据报错是arm64-v8a的.so文件生成错误吗?这要怎么修改?

@wysaid
Copy link
Owner

wysaid commented Feb 10, 2023

大师兄好,像这种不兼容两种品牌处理器的情况,我考虑到了三种可能,GLSL精度不支持,GLSL 版本不支持或ABI的问题,我修改了GLSL的精度和版本,好像不能解决这个问题;再就是ABI问题,根据报错是arm64-v8a的.so文件生成错误吗?这要怎么修改?

1 这个修了, 你更新下看看

@wysaid
Copy link
Owner

wysaid commented Feb 10, 2023

崩溃的问题也复现了。 刚好明天周六, 抽空看看。 应该问题不大

@xiaodi86
Copy link
Author

大师兄牛!感谢!感谢!
另外就是基于这个库我做的一个伪彩色的特效,测试发现,正好与波形图特效的问题情况相反(波形图特效能正常显示的手机机型上,伪彩色特效显示一片空白;波形图特效点击崩溃的手机机型上,伪彩色特效正常显示。),我把基于feature/histogram分支最新版本添加了伪彩色特效的库打包发您邮箱里,可以对比看看是否对解决问题有所帮助。

@wysaid
Copy link
Owner

wysaid commented Feb 10, 2023

大师兄牛!感谢!感谢! 另外就是基于这个库我做的一个伪彩色的特效,测试发现,正好与波形图特效的问题情况相反(波形图特效能正常显示的手机机型上,伪彩色特效显示一片空白;波形图特效点击崩溃的手机机型上,伪彩色特效正常显示。),我把基于feature/histogram分支最新版本添加了伪彩色特效的库打包发您邮箱里,可以对比看看是否对解决问题有所帮助。

别发邮箱了, 你另起一个分支, 提个 PR 吧, 我可以基于你的 PR 来看.

@wysaid
Copy link
Owner

wysaid commented Feb 10, 2023

另外新的项目结构支持cmake, 你用 android studio 参考根目录的 readme.md 来编译, 不要用 ndk-build

  • Build with Android Studio and CMake: (Recommended)
    • Put usingCMakeCompile=true in your local.properties
    • Open the repo with the latest version of Android Studio
    • Waiting for the initialization. (NDK/cmake install)
    • Done.

@xiaodi86
Copy link
Author

大师兄好,新建了个分支New-Effects,将特效更新上去了。抱歉,网速比较慢加上git提交到GitHub时各种报错,花了些时间。

@wysaid
Copy link
Owner

wysaid commented Feb 12, 2023

大师兄好,像这种不兼容两种品牌处理器的情况,我考虑到了三种可能,GLSL精度不支持,GLSL 版本不支持或ABI的问题,我修改了GLSL的精度和版本,好像不能解决这个问题;再就是ABI问题,根据报错是arm64-v8a的.so文件生成错误吗?这要怎么修改?

1 这个修了, 你更新下看看

剩下的也修了, 你再看看。 至于你新发的 New-Effects, 你自己再看看吧。 最好自己尝试修一下。有问题再说。

@xiaodi86
Copy link
Author

xiaodi86 commented Feb 13, 2023

大师兄好,感谢一直以来的帮助。所有机型上测试了一遍,问题都已解决。最新版中这行代码还是要换成上一个版本代码(glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT);---->glFinish();)不然会在手机型号:HONOR 30Pro(GPU Mali-G76) 、Meizu MX6(GPU Mali-T880 MP4)上出现不绘制波形图,只有一个空背景情况。另外伪彩色的问题是数组不支持,改为定义13个变量就解决了。

@wysaid
Copy link
Owner

wysaid commented Feb 13, 2023

大师兄好,感谢一直以来的帮助。所有机型上测试了一遍,问题都已解决。最新版中这行代码还是要换成上一个版本代码(glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT);---->glFinish();)不然会在手机型号:HONOR 30Pro(GPU Mali-G76) 、Meizu MX6(GPU Mali-T880 MP4)上出现不绘制波形图,只有一个空背景情况。另外伪彩色的问题是数组不支持,改为定义13个变量就解决了。

试着把 glFinish 的问题也修了, 你再验证一下, 没问题的话我把这个效果合入到主干分支

@xiaodi86
Copy link
Author

大师兄好,验证了一遍, 没问题了,感谢!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants