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

时间:2013-12-22 22:49:12

标签: plugins segmentation-fault vlc

我正在尝试为VLC构建一个“out of tree”插件。

计算机规格:Intel x64 Ubuntu 12.04

VLC规格: VLC媒体播放器2.0.8

解决这个问题

  • 克隆了VLC git存储库
  • 添加了我的模块(只是一个名称更改的vmem副本)
  • 将模块信息添加到autotools

有效!当我转到工具 - > preferences-> video->输出时,我可以在VLC中看到我的模块。

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

我按照这里的说明操作: VLC Out of tree compile

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

#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 Twoflower(修订版2.0.8a-0-g68cf50b)   分段错误(核心转储)

dmesg | tail打印出来:

  

[141376.468964] vlc [27609]:segfault at 88 ip 00007f06ccd6a4db sp 00007fff029a6310 libvlccore.so.5.1.1中的错误6 [7f06ccce4000 + db000]

以下是此项目的git repo链接: Nysa Video Git Repo

要构建你需要scons并在基本目录中:

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

1 个答案:

答案 0 :(得分:1)

我发现我的代码中存在错误

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 repo,希望能帮助那些想要为VLC构建一个out of tree插件的人。

VLC Out of tree Plugin

自述文件中有说明