-
Notifications
You must be signed in to change notification settings - Fork 477
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
base: master
Are you sure you want to change the base?
Conversation
在以center(x,y)为原点,宽xValue(value1),高yValue(value2),背景色为bgColor(0.0,0.0,0.0)的矩形框中绘制亮度表(直方图)或亮度波形图。如何在这个库的基础上使用GLSL实现? |
好的, 你想做的大概了解了。 其中 wave form 这个效果由于需要通过颜色来选择绘制的位置, 应该通过 Compute Shader 来做. 然后 Compute Shader 需要 GLES3.1 及以上的版本才支持, 然后 GLES3.1+ 基本上能覆盖绝大多数设备(在国内应该能覆盖 98%的安卓设备, 在国际范围内的话可以参考这个文档 https://developer.android.com/about/dashboards#OpenGL). 这个库有一段时间没更新了,我最近抽空大概更新一下, 支持一下 compute shader 就可以实现了。 对于不支持 compute shader 的设备, 你可以参考 "cgeColorMappingFilter" 这个效果的实现逻辑, 去读取 pixel 像素数据, 然后实现你想要的效果. 也就是说, wave form 这个效果, 最佳写法是用 compute shader 实现, 但为了兼容低端机, 你还需要一个基于 pixel 数据的版本. 你也可以只实现基于 pixel 数据的版本, 也能满足需求。 然后 "cgeColorMappingFilter" 这个效果只是演示, 写得比较粗糙, 获取像素数据可以用 PBO swap 加速一下, 这个我近期优化一下。 |
总结一下就是: 你先通过参考 "cgeColorMappingFilter" 的使用行为, 自行尝试实现一下 这两个效果吧。 |
好的,感谢回复,我先尝试参考 "cgeColorMappingFilter" 的使用实现一下。 |
那你可以先给出你的比较卡的实现, 然后我会在你的代码基础上告诉你如何优化 |
感谢回复,效果已更新到我的分支上,显示有点慢,效果比较卡。 |
跟这个没太大关系. 还没来得及看, 待会看看你这个。 |
感谢回复。你好,我将Histogram branch下载下来运行没有遇到类似问题,然后将代码更新到你的最新更新optimize/better_file_structure分支上也没有遇到类似问题。 |
大师兄好,已更新到最新版本,还是存在那个位置抢占问题,就是一段时间后会画满整张图片,请问这个问题是不是短期内很难解决啊? |
我这边没有遇到你说的问题, 所以我在问你用的什么手机。 你多用几个手机测一下。 |
大师兄好,我刚用四种手机测试了,测试情况如下: 荣耀Play5 magic hjc-an90 播放器页面崩溃,报错 Redmi Note 11 播放器页面崩溃,报错 小米11LE |
会不会是ndk-build时armeabi类型的.so文件没有生成成功造成的,因为ndk-build时报错: |
你试试 readme 页面的cmake的编译方式, 会自动更新ndk版本,你的ndk版本太低了。更新之后再试试 |
按这个试一下哈, 我这边试了几个手机, 没发现你说的问题, 甚至用模拟器跑了一下, 也没问题。 没有你说的那几个手机 |
大师兄好,我尝试了更新使用新版的NDK,也试了readme 页面的cmake的编译方式,还是存在上面同样的问题,详细情况已用邮件发送给您。 |
你的NDK版本太老了. 我在项目里面配置的是NDK23. |
大师兄好,版本是不是发错了,这个版本里面没有波形图特效。 |
oh 我重新来一个. 用成master分支了 |
找到个低端机试了下, 是 clear 时序错了。 加了行 glFlush 修了。 你试试吧。 代码我也同步到对应的分支了 |
大师兄好,我NDK23、NDK23b、NDK23c几个版本都试过了,两个apk也安装测试了,对应机型还是同样的错误。 您说的低端机是指哪个型号?meizu MX6是16年发布的机型,测试和前面一样画面整个画面。 那边不方便调试,如果有需要,可以远程操作我的电脑调试。 |
1 similar comment
大师兄好,我NDK23、NDK23b、NDK23c几个版本都试过了,两个apk也安装测试了,对应机型还是同样的错误。 您说的低端机是指哪个型号?meizu MX6是16年发布的机型,测试和前面一样画面整个画面。 那边不方便调试,如果有需要,可以远程操作我的电脑调试。 |
你先基于这个版本多测几个手机, 多提供几个你看到有问题的机型,我看看有没有我也有的。我没有魅族的MX6。 |
大师兄好,我把能借到的不同手机型号都做了测试,情况如下: 手机型号: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 3、特效正常的有 手机型号:Mi 11LE、Nova Nam-AL00、Motorola Edge30、Meizu 17、腾讯黑鲨游戏手机3S |
好的~ 我找几个手机测一下试试 |
大师兄好,像这种不兼容两种品牌处理器的情况,我考虑到了三种可能,GLSL精度不支持,GLSL 版本不支持或ABI的问题,我修改了GLSL的精度和版本,好像不能解决这个问题;再就是ABI问题,根据报错是arm64-v8a的.so文件生成错误吗?这要怎么修改? |
1 这个修了, 你更新下看看 |
崩溃的问题也复现了。 刚好明天周六, 抽空看看。 应该问题不大 |
大师兄牛!感谢!感谢! |
别发邮箱了, 你另起一个分支, 提个 PR 吧, 我可以基于你的 PR 来看. |
另外新的项目结构支持cmake, 你用 android studio 参考根目录的 readme.md 来编译, 不要用 ndk-build
|
大师兄好,新建了个分支New-Effects,将特效更新上去了。抱歉,网速比较慢加上git提交到GitHub时各种报错,花了些时间。 |
剩下的也修了, 你再看看。 至于你新发的 New-Effects, 你自己再看看吧。 最好自己尝试修一下。有问题再说。 |
大师兄好,感谢一直以来的帮助。所有机型上测试了一遍,问题都已解决。最新版中这行代码还是要换成上一个版本代码(glMemoryBarrier(GL_TEXTURE_FETCH_BARRIER_BIT);---->glFinish();)不然会在手机型号:HONOR 30Pro(GPU Mali-G76) 、Meizu MX6(GPU Mali-T880 MP4)上出现不绘制波形图,只有一个空背景情况。另外伪彩色的问题是数组不支持,改为定义13个变量就解决了。 |
试着把 glFinish 的问题也修了, 你再验证一下, 没问题的话我把这个效果合入到主干分支 |
大师兄好,验证了一遍, 没问题了,感谢! |
已按照实现其他特效的步骤,先新建了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文件中只配置了需要设置的参数与相应注释,及想要效果的说明。