2013-12-22 83 views
1

我正在嘗試爲VLC構建一個'out of tree'插件。VLC插件出樹造成分段錯誤

電腦規格:英特爾64位的Ubuntu 12.04

VLC規格: VLC媒體播放器2.0.8

爲了解決這個問題我

  • 克隆的VLC git倉庫
  • 添加我的模塊(只是一些名稱變化的vmem)
  • 添加模塊信息到自動工具

它的工作!當我轉到工具 - >首選項 - >視頻 - >輸出時,我可以在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,我收到了賽格故障:

VLC媒體播放器2.0.8 Twoflower(修訂2.0.8a-0-g68cf50b) 分割故障(核心轉儲)

dmesg | tail打印出:

[141376.468964] VLC [27609]:段錯誤在88 IP 00007f06ccd6a4db SP在libvlccore.so.5.1 00007fff029a6310錯誤6。1 7f06ccce4000 + db000]

這裏是我的git回購的鏈接項目: Nysa Video Git Repo

要建立你需要scons的,並在基本目錄:

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

回答

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"       )) 

我張貼這個問題時,它是一個簡單的錯誤感到難過,所以我創建了一個混帳回購協議,希望能幫助別人尋求建立一個不折不扣的樹插件對於VLC。

VLC Out of tree Plugin

有自述說明