树构建中的 VLC 插件会导致分段错误



我正在尝试为 VLC 构建一个"树外"插件。

计算机规格:英特尔 x64 Ubuntu 12.04

VLC 规格: VLC媒体播放器 2.0.8

为了解决这个问题,我

  • 克隆了 VLC git 存储库
  • 添加了我的模块(只是 vmem 的副本,但名称发生了一些更改)
  • 向自动工具添加了模块信息

成功了!当我转到工具->首选项->视频->输出时,我可以在VLC中看到我的模块。

我想做同样的事情"树外",我独立于 VLC 树构建模块并将生成的共享对象库复制到 VLC 可以读取它并且 VLC 检测到它的地方。

我按照这里的说明进行操作: VLC 树外编译

  • 我将"树中"模块复制到新目录
  • 编写了一个SConstruct文件,以根据上面的说明以及 http://wiki.videolan.org/Documentation:VLC_Modules_Loading/的说明构建它

以下是该模块的缩短版本:

#define DOMAIN  "vlc-nysa"
#define _(str)  dgettext(DOMAIN, str)
#define N_(str) (str)
#define MODULE_STRING "nysa-video"
vlc_module_begin()
/* VLC Uses these to identify the module */
set_text_domain     (DOMAIN)
set_description     (N_("Nysa Video Output"                           ))                                     
set_shortname       (N_("Nysa Video"                                  ))                                     
set_category        (CAT_VIDEO                                        )                                      
set_subcategory     (SUBCAT_VIDEO_VOUT                                )                                      
set_capability      ("vout display", 1                                ) 
/* Options left out for brevity */
/* Add Callbacks */
set_callbacks       (Open, Close                                      )
vlc_module_end()
/* implementation here */

输出

所以人们不必弄清楚 scons 语法,这里是构建输出:

scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
gcc -o src/nysa_video.os -c -std=gnu99 -Wall -Wextra -O2 -fPIC -fPIC -D__PLUGIN__ -D_FILE_OFFSET_BITS=64 -D_REENTRANT -D_THREAD_SAFE -DPIC -I/usr/include/vlc -I/usr/include/vlc/plugins -Iinclude src/nysa_video.c
gcc -o build/libnysa_video_plugin.so -Wl,-no-undefined,-z,defs -shared src/nysa_video.os -L/usr/lib -L/usr/local/lib -lvlc -lvlccore
scons: `install' is up to date.
scons: done building targets.

结果

我确实得到了一个名为libnysa_video_plugin.so的文件,我将其复制到/usr/lib/vlc/plugins/video_output目录中

当我运行VLC时,我遇到了一个seg错误:

VLC 媒体播放器 2.0.8 双花 (修订版 2.0.8a-0-g68cf50b) 分段故障(核心转储)

dmesg | tail打印输出:

[141376.468964] VLC[27609]:88 IP 00007F06CCD6A4DB sp 00007FFFf029A6310 libvlccore.so.5.1.1[7F06ccce4000+db000] 中的段错误 6

这是指向我这个项目的 git 存储库的链接: 尼萨视频 Git 存储库

要构建,您需要 scons 并在基目录中:

  • 要构建:scons
  • 要安装(安装到/usr/lib/vlc/plugins/video_output):sudo scons install

我发现我的代码中有一个错误

vlc_module_begin()
/* VLC Uses these to identify the module */
set_text_domain     (DOMAIN)  //THIS SHOULDN'T BE HERE
set_description     (N_("Nysa Video Output"                           ))   

当这个问题只是一个错误时,我对发布这个问题感到很糟糕,所以我创建了一个 git 存储库,希望能帮助那些希望为 VLC 构建树外插件的人。

VLC 树外插件

自述文件中有说明

相关内容

  • 没有找到相关文章

最新更新