gpt4 book ai didi

c - 如何使用我自己的自定义函数覆盖 libavformat 中的内存访问函数(malloc、realloc 等)

转载 作者:行者123 更新时间:2023-12-04 22:51:07 26 4
gpt4 key购买 nike

我正在使用 libavformat-dev 包来获取一些媒体文件属性,例如比特率、持续时间等。但是,我想使用我的自定义 malloc、calloc、realloc 函数来代替 libavformat 使用的系统函数。有没有办法在 libavformat 中注册我的自定义函数?

最佳答案

FFmpeg 库使用“av_”前缀的函数名进行内存管理。您可以在应用程序中简单地重载这些函数,以便运行时链接器使用您的版本,例如:

void *av_malloc(size_t size) {
fprintf(stderr, "Hijacking FFmpeg malloc(): Requested %zd bytes\n", size);
return malloc(size);
}
FFmpeg 源代码中的注释:

If you want to override these functions with your ownimplementations (not recommended) you have to link libav* asdynamic libraries and remove -Wl,-Bsymbolic from the linker flags.Note that this will cost performance.


引用:
https://ffmpeg.org/doxygen/3.1/group__lavu__mem.html
https://ffmpeg.org/doxygen/3.1/mem_8c_source.html#l00260

关于c - 如何使用我自己的自定义函数覆盖 libavformat 中的内存访问函数(malloc、realloc 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20280173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com