CMEM_init();CMEM_alloc();CMEM_free()

我git了aml_hardware_decode_demo/ionplayer.c
做了交叉编译工具链,但是始终找不到下面这三个函数引用了哪个头文件
CMEM_init();CMEM_alloc();CMEM_free()

请告知。

从引用方式可以看出来,在系统路径下:/usr/include

make的日志如下:-Wimplicit-function-declaration警告的几个函数找到了头文件,但是CMEM_init();CMEM_alloc();CMEM_free()还是没有找到头文件。

ionplayer.c: In function ‘set_tsync_enable’:
ionplayer.c:58:9: warning: implicit declaration of function ‘write’; did you mean ‘fwrite’? [-Wimplicit-function-declaration]
58 | write(fd, bcmd, strlen(bcmd));
| ^~~~~
| fwrite
ionplayer.c:59:9: warning: implicit declaration of function ‘close’; did you mean ‘pclose’? [-Wimplicit-function-declaration]
59 | close(fd);
| ^~~~~
| pclose
ionplayer.c: In function ‘set_double_write_mode’:
ionplayer.c:68:24: warning: implicit declaration of function ‘amsysfs_get_sysfs_int’ [-Wimplicit-function-declaration]
68 | g_double_write_mode = amsysfs_get_sysfs_int(path);
| ^~~~~~~~~~~~~~~~~~~~~
ionplayer.c:69:2: warning: implicit declaration of function ‘amsysfs_set_sysfs_int’ [-Wimplicit-function-declaration]
69 | amsysfs_set_sysfs_int(path, 16);
| ^~~~~~~~~~~~~~~~~~~~~
ionplayer.c: In function ‘FreeBuffers’:
ionplayer.c:118:13: warning: implicit declaration of function ‘CMEM_free’ [-Wimplicit-function-declaration]
118 | CMEM_free(&vbuffer[i].buffer);
| ^~~~~~~~~
ionplayer.c: In function ‘AllocBuffers’:
ionplayer.c:125:5: warning: implicit declaration of function ‘CMEM_init’ [-Wimplicit-function-declaration]
125 | CMEM_init();
| ^~~~~~~~~
ionplayer.c:128:15: warning: implicit declaration of function ‘CMEM_alloc’ [-Wimplicit-function-declaration]
128 | ret = CMEM_alloc(size, &vbuffer[i].buffer);
| ^~~~~~~~~~
ionplayer.c: In function ‘ionvideo_init’:
ionplayer.c:146:5: warning: implicit declaration of function ‘amsysfs_set_sysfs_str’ [-Wimplicit-function-declaration]
146 | amsysfs_set_sysfs_str("/sys/class/vfm/map", “rm default”);
| ^~~~~~~~~~~~~~~~~~~~~
ionplayer.c: In function ‘main’:
ionplayer.c:317:41: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘int64_t’ {aka ‘long int’} [-Wformat=]
317 | printf(“vf idx%d pts 0x%x\n”, vf.index, vf.pts);
| ~^ ~~~~~~
| | |
| unsigned int int64_t {aka long int}
| %lx
ionplayer.c:363:37: warning: format ‘%x’ expects argument of type ‘unsigned int’, but argument 3 has type ‘int64_t’ {aka ‘long int’} [-Wformat=]
363 | printf(“vf idx%d pts 0x%x\n”, vf.index, vf.pts);
| ~^ ~~~~~~
| | |
| unsigned int int64_t {aka long int}
| %lx

@youngor 不要交叉编译,直接在板子上编译就好。

在板子上用cmake编译也会找不到cmem,请问有什么方法解决吗,我想把它放进一个c++的程序中

Hi @qintian

你用的什么固件?怎么编译的?参考demo编译也不行?

参考demo的编译是可以通过的,gcc -o ionplayer ionplayer.c -lamcodec -lamadec -lamvdec -lamavutils -lpthread
但是我在使用cmake时出现了找不到cmem库的问题

cmake中引入了这些库:
# target_link_libraries(ionplayer PRIVATE spdlog::spdlog amcodec amadec amavutils ${AVCODEC_LIBRARY} ${AVFORMAT_LIBRARY} ${AVUTIL_LIBRARY} ${AVDEVICE_LIBRARY})