SpiceGL
SpiceGL
> 用 AddressSanitizer 分析看看是哪里的问题 我在开启-fsanitize=address后,错误就不再触发。我很确定我是用的同一份代码,编译选项只有-fsanitize=address的区别。结果就是添加了-fsanitize=address的程序,运行时不报错,而未添加-fsanitize=address的程序就会报错,都是在-g编译条件下。请问这意味着什么呢?
> 难道是编译器相关么?这我也不知道了啊。。。。 比较可能是 double free 的问题,运行时有报 sanitize 检查的 log 么? 开启了-fsanitize后就不再报错了,已经运行半个多小时了,很奇怪。这是否有可能与例子太旧有关呢?或者h265多路解码目前还存在某种bug?还有更新的ffmpeg+rtsp拉流的例子可以提供么?
> 对 ffmpeg 的支持已经被要求不再更新了,有授权问题 好的谢谢告知。那么请问你们有其他较新的多路rtsp拉流解码例子吗?目前test中的例子似乎是本地解码。我想继续测试下h265多路解码的报错是否是我自己使用的问题。
> 可以直接用 mpi_dec_test 跑一下看是不是 mpp 本身版本的问题 你好,刚刚我用了mpi_dec_multi_test.c来测试,尽量不改动代码,只在```multi_dec_decode```函数中加入ffmpeg进行拉流,将其mpp_packet用av_packet进行初始化。在H265解码时,很快遇到了相同的问题```free(): invalid pointer```,切换到h264后,正常运行。而这其中的变量只有解码格式。当然,我如果不进行解码,只有ffmpeg拉流是不会触发这个问题的。 虽然我的测试依然不是很全面,不过这些现象我谨慎地认为,如果不是我的rtsp流有问题,那么可能mpp库对于h265解码的支持存在一些小问题?请贵司有时间的话确认一下。我这边只能暂时先要求我们的视频流必须为h264的编码。
> 可以把单独保存下裸码流.h265,然后用mpi_dec_test再跑下,如果有问题,可以把码流同步给我们本地复现下 你好,我已经保存了.h265裸流,继续使用mpp1.0.4版的mpi_dec_multi_test.c来测试,因为我发现错误在多个线程下更容易出现。 我测试了两种版本,一是mpi_dec_multi_test.c原版读取本地视频,另一个是mpi_dec_multi_test.c加入ffmpeg来读取本地视频。 # 测试平台 rv1126、rv1109 # 测试h.265: ## mpi_dec_multi_test.c原版 测试指令:`./mpi_dec_multi_test -t 16777220 -i test.h265 -s 8` 因8个线程错误触发率高,实际上4线程也能随机触发报错 结果:`corrupted size vs. prev_size`或`free(): invalid pointer`报错,如果一次测试中十来秒还没触发错误,可以关掉再打开复测几次。 ## mpi_dec_multi_test.c加入ffmpeg 测试指令:`./mpi_dec_multi_test_with_ffmpeg -t 16777220...
> 可以直接用 mpi_dec_test 跑一下看是不是 mpp 本身版本的问题 请告诉我如何将测试工程同步给你们,谢谢。
> 可以直接将test.h265发给我们,文件不大的话可以直接上传github,或者上传网盘。 我们本地用mpi_dec_multi_test同步测试看下能否复现 好的,麻烦了,我测试平台为rv1126和rv1109,用的是mpp1.0.4版本编译出的mpi_dec_multi_test,测试指令为`./mpi_dec_multi_test -i test.h265 -t 16777220 -s 8`,测试文件的链接为链接: https://pan.baidu.com/s/1lyAYQ-uLh0PPyxubjEfBLg?pwd=0ud5 提取码:0ud5 --来自百度网盘超级会员V5的分享
> 是否有进展? 我正在调试rkmedia,测试稍微晚了一点。 修改mpp_bitput.c后,在rv1126和rv1109上都已测试,确实问题已经不再出现,感谢贵司的协助!
> > 我参考Readme中提供的例子`https://github.com/MUZLATAN/ffmpeg_rtsp_mpp`,自己改成了4路拉流解码,在拉取h264时没有问题。但是在拉取h265时(已修改解码类型:MppCodingType type = MPP_VIDEO_CodingHEVC;),发现有两种报错退出方式:free() invalid pointer、corrupted size vs. prev size。 我开始以为是我自己的改写有问题,于是使用ffmpeg_rtsp_mpp原版例子,将main函数改名为thread0,然后在新的main函数中以4个线程分别调用,结果还是触发了上述报错。而在h264的解码时并没有遇到这个问题。 我的测试设备是rv1109和rv1126,mpp版本是最新1.0.4,均存在上述问题。请问这个是什么原因导致的呢? > > 新的main函数: > > ``` > > int main(int argc, char* argv[]) > > {...